我正在尝试在我的计算机中查找设备的地址。到目前为止,我设法获得了设备列表(使用 pcap_findalldevs),但我不知道如何到达这些地址。我看到了这个手册页 - http://www.tcpdump.org/pcap3_man.html 写着这样的东西
寻址一个指向接口地址列表的第一个元素的指针
然后这个
地址列表的每个元素都是 pcap_addr_t 类型,并具有以下成员:
所以我有这个代码
pcap_if_t *alldevsp , *device;
char *devname , **devs;
int count = 1 , n;
if(pcap_findalldevs(&alldevsp, errbuf))
{
printf("Error: %s" , errbuf);
exit(1);
}
device = alldevsp;
pcap_addr_t list;
printf("\nDevices:\n");
while(device != NULL)
{
printf("%d. %s - %s", count++ , device->name , device->description);
list = device->addresses[0];
printf("address: %s\n",(char *) inet_ntoa(list.addr));
device = device->next;
}
编译没问题,但是当我尝试运行它时,我得到了这个:
设备:1. eth0 - (null)addres: 144.208.30.8 2. wlan0 - (null)addres: 128.213.30.8 分段错误
我可以理解段错误,因为第三个设备是 USB 并且它没有地址,但是 eth0 和 wlan0 的那些 IP 是错误的,它们不匹配。
我究竟做错了什么?