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
errx(1, "pcap_findalldevs: %s", ebuf);
上面的代码并不能获取列表,于是用pcap_findalldevs_ex,这个是专门给windows设计的,但更奇怪的是,这个函数pcap_findalldevs_ex直接运行出错,调试错误提示为:Unhandled exception in **.exe (WPCAP.DLL) : 0xC0000005 Access Violation
http://blog.csdn.net/norsd/archive/2007/04/26/1585594.aspx
#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;
}