gpt4 book ai didi

c++ - 获取 WinPcap 地址信息时出错

转载 作者:行者123 更新时间:2023-11-28 07:58:47 29 4
gpt4 key购买 nike

您好,我在从 WinPcap 驱动程序获取网卡地址信息时遇到了一些问题。我注意到,每当为特定 NIC 启用 IPv6 时,它的地址信息就会变为 0.0.0.0。我该如何解决这个问题?

pcap_addr* address = GetDeviceAddress(1);

cout<<"IP address "<<iptos(((struct sockaddr_in *)address->addr)->sin_addr.s_addr)<<endl;
/////////////

pcap_addr* GetDeviceAddress(int index)//Gets the name of a device using the zero based index of its location in the list
{
int i=0;
if(pcap_findalldevs_ex(PCAP_SRC_IF_STRING,NULL,&AllDevices,errbuf) != -1)
for(Iterator=AllDevices;Iterator!=NULL;Iterator=Iterator->next)
{
if(i==index)
{
return Iterator->addresses;
}
i++;
}
return NULL;
}

最佳答案

查看地址信息的代码是什么样的?也许它有一个错误导致它无法正确处理 IPv6 地址。

地址信息可能有多个 IP 地址——libpcap/WinPcap 的pcap_findalldevs() 调用和WinPcap 的pcap_findalldevs_ex() 调用提供了一个指向 pcap_if_t 结构列表的指针,每个结构对应它找到的每个接口(interface),并且每个结构都包含 list struct pcap_addr< 类型的地址信息项。这些地址信息项中的每一个都包括一个网络地址,其类型为struct sockaddr;该结构包括一个名为 sa_family 的成员,对于 IPv4 其值为 AF_INET,对于 IPv6 其值为 AF_INET6。如果成员的值为 AF_INET6,则地址数据将是 128 位的 IPv6 地址,不是 32 位的 IPv4 地址。

关于c++ - 获取 WinPcap 地址信息时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12042091/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com