- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
以下来自 libpcap 文档的示例代码会产生以下代码,该代码应报告给定接口(interface)的 IP 地址(在本例中为 eth0)[为简洁起见,省略了错误检查]
#include <stdio.h>
#include <pcap.h>
#include <arpa/inet.h>
int main(int argc, char *argv[])
{
char errbuf[PCAP_ERRBUF_SIZE];
bpf_u_int32 mask;
bpf_u_int32 ip;
struct in_addr ip_addr;
/* Find the properties for the device */
pcap_lookupnet("eth0", &ip, &mask, errbuf);
ip_addr.s_addr = ip;
printf("IP Address: %s\n", inet_ntoa(ip_addr));
return 0;
}
但是,这会导致 192.168.1.0,而不是正确的 192.168.1.100。在不同子网的不同机器上运行它会产生 10.0.0.0 而不是正确的 10.0.0.107 这让我相信 libpcap 没有正确复制最后一个八位字节。我已经手动转换了 pcap_lookupnet 返回的整数,以确保它不是使用 inet_ntoa 的问题(我也尝试过 inet_ntop,结果相同)。按照这个问题的代码: Get IP address of an interface on Linux报告正确的 IP 地址。这是 libpcap 中的错误还是我做错了什么?
最佳答案
您的声明“应该报告给定接口(interface)的 IP 地址”是不正确的。
来自手册页:
pcap_lookupnet() is used to determine the IPv4 network number and mask associated with the network device device. Both netp and maskp are bpf_u_int32 pointers.
您确定您的网络号码分别为 10.0.0.107 或 192.168.1.100 吗?听起来很不寻常。
关于c - pcap_lookupnet 返回错误的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213828/
以下来自 libpcap 文档的示例代码会产生以下代码,该代码应报告给定接口(interface)的 IP 地址(在本例中为 eth0)[为简洁起见,省略了错误检查] #include #inclu
我是一名优秀的程序员,十分优秀!