if (pcap_findalldevs(&alldevs, ebuf) == -1)
errx(1, "pcap_findalldevs: %s", ebuf);
上面的代码并不能获取列表,于是用pcap_findalldevs_ex,这个是专门给windows设计的,但更奇怪的是,这个函数pcap_findalldevs_ex直接运行出错,调试错误提示为:Unhandled exception in **.exe (WPCAP.DLL)  : 0xC0000005 Access Violation

解决方案 »

  1.   

    权限不够 , vista下 设置管理员权限
    http://blog.csdn.net/norsd/archive/2007/04/26/1585594.aspx
      

  2.   

    pcap版本对吗?建议用4.0以上的
    #include <stdio.h>
    #include <conio.h>
    #include <Winsock2.h>
    #include  "include/pcap.h"   
    #pragma comment(lib,"lib/wpcap.lib")
    #pragma comment(lib,"ws2_32.lib")int main()  
    {  
    char error_content[PCAP_ERRBUF_SIZE];
    pcap_if_t* dev,*head;
    pcap_addr* p;

    if (pcap_findalldevs(&dev, error_content) == -1)
    {
    printf(error_content);
    }
    else
    {
    head = dev;
    while(dev)
    {
    printf("%s\n", dev->description);
    p = dev->addresses;
    while (p)
    {
    char* ip = _strdup(inet_ntoa(((sockaddr_in*)p->addr)->sin_addr));
    char* mask = _strdup(inet_ntoa(((sockaddr_in*)p->netmask)->sin_addr));
    printf("IP:%s\nMask:%s\n", ip, mask);
    free(ip);
    free(mask);
    p = p->next;
    }
    dev = dev->next;
    printf("\n");
    }
    pcap_freealldevs(head);
    }
    _getch();
    return 0;