c++ winpcap开发(1)
生活随笔
收集整理的這篇文章主要介紹了
c++ winpcap开发(1)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
獲取設備列表
通常,基于WinPcap的應用程序的第一件事是獲取附加網絡適配器的列表。libpcap和WinPcap都為此提供了pcap_findalldevs_ex()函數:該函數返回一個pcap_if結構的鏈表,每個結構都包含有關連接的適配器的綜合信息。特別地,字段名稱和描述分別包含對應設備的名稱和人類可讀描述。
以下代碼檢索適配器列表,并在屏幕上顯示,如果沒有找到適配器,則打印錯誤。
#include "pcap.h"main() {pcap_if_t *alldevs;pcap_if_t *d;int i=0;char errbuf[PCAP_ERRBUF_SIZE];/* Retrieve the device list from the local machine */if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) == -1){fprintf(stderr,"Error in pcap_findalldevs_ex: %s\n", errbuf);exit(1);}/* Print the list */for(d= alldevs; d != NULL; d= d->next){printf("%d. %s", ++i, d->name);if (d->description)printf(" (%s)\n", d->description);elseprintf(" (No description available)\n");}if (i == 0){printf("\nNo interfaces found! Make sure WinPcap is installed.\n");return;}/* We don't need any more the device list. Free it */pcap_freealldevs(alldevs); }關于這段代碼的一些意見。
首先,像其他libpcap函數一樣,pcap_findalldevs_ex()具有一個errbuf參數。此參數指向由libpcap填充的字符串,如果出現問題,則說明錯誤。
其次,請記住,并不是libpcap支持的所有操作系統都提供了網絡接口的描述,因此,如果我們要寫一個便攜式應用程序,我們必須考慮以下情況:描述為null:我們打印字符串“No description available”in那個情況
最后注意,當我們完成它時,我們用pcap_freealldevs()一次釋放列表。
我們來嘗試編譯并運行第一個示例的代碼。為了在Unix或Cygwin下編譯它,只需輸入:
gcc -o testprog testprog.c -lpcap假設我們編譯了這個程序,我們來嘗試運行它。在特定的WinXP工作站上,我們選擇的結果是
1. \ Device \ NPF_ {4E273621-5161-46C8-895A-48D0E52A0B83}(Realtek RTL8029(AS)以太網適配器)2. \ Device \ NPF_ {5D24AE04-C486-4A96-83FB-8B5EC6C7F430}(3Com EtherLink PCI)
總結
以上是生活随笔為你收集整理的c++ winpcap开发(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 24. 反转链表
- 下一篇: Eclipse显示内存占用