WinPcap編程3——獲取網絡適配器列表

WinPcap應用程序的第一件事情就是獲得已連接的網絡適配器列表。

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];
    /*
獲取本地機器設備列表*/
    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);
    }
    /*
打印列表*/
    for(d= alldevs; d != NULL; d= d->next)
    {
        printf("%d. %s", ++i, d->name);
        if (d->description)
            printf(" (%s)/n", d->description);
        else
            printf(" (No description available)/n");
    }
    if (i == 0)
    {
        printf("/nNo interfaces found! Make sure WinPcap is installed./n");
        return;
    }
    /*
不再需要設備列表了,釋放它*/
    pcap_freealldevs(alldevs);
}

這 是一個非常典型的C代碼,過程比較簡單:首先通過pcap_findalldevs_ex獲取網絡適配器列表,網絡適配器列表信息保持在一個 pcap_if_t指針中,它是一個經典的C式鏈表結構,可以通過這個指針遍歷所有的網絡適配器。最後,調用pcap_freealldevs釋放資源。

可以看出,每個網絡適配器的信息都保存在一個pcap_if_t結構中,除了本例中所示的一些信息外,它裏面還包含不少有用的信息(mac地址、ip地址等),有興趣的朋友可以研究一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章