有没有办法如何获得Linux中使用libpcap的接口的IP地址?使用pcap获取linux中的接口的ip地址
我发现这一点: Get IP address of an interface on Linux
,但不使用PCAP。
在PCAP例子也说,像this应该得到你的IP,但它给你的网络地址
这将是很好有一个PCAP解决方案,但如果没有,我会用来自第一个链接的代码。
感谢
有没有办法如何获得Linux中使用libpcap的接口的IP地址?使用pcap获取linux中的接口的ip地址
我发现这一点: Get IP address of an interface on Linux
,但不使用PCAP。
在PCAP例子也说,像this应该得到你的IP,但它给你的网络地址
这将是很好有一个PCAP解决方案,但如果没有,我会用来自第一个链接的代码。
感谢
使用pcap_findalldevs
功能:
#include <pcap/pcap.h>
#include <arpa/inet.h>
static char errbuf[PCAP_ERRBUF_SIZE];
int main() {
pcap_if_t *alldevs;
int status = pcap_findalldevs(&alldevs, errbuf);
if(status != 0) {
printf("%s\n", errbuf);
return 1;
}
for(pcap_if_t *d=alldevs; d!=NULL; d=d->next) {
printf("%s:", d->name);
for(pcap_addr_t *a=d->addresses; a!=NULL; a=a->next) {
if(a->addr->sa_family == AF_INET)
printf(" %s", inet_ntoa(((struct sockaddr_in*)a->addr)->sin_addr));
}
printf("\n");
}
pcap_freealldevs(alldevs);
return 0;
}
的sudo ./pcap
输出:
eth0: 192.168.2.1
usbmon1:
usbmon2:
usbmon3:
usbmon4:
usbmon5:
any:
lo: 127.0.0.1
谢谢。我遇到了一个编译器问题,我解决了这个问题:http://stackoverflow.com/questions/24881/how-do-i-fix-for-loop-initial-declaration-used-outside-c99-mode-gcc -错误 – tremendows 2013-07-11 16:15:24
我不明白这一点。你为什么想用pcap来做? – 2012-02-25 10:47:21
,因为我很好奇,我也看过那个例子(和其他人)写在<我们的IP地址>的地方,它实际上给了他们他们的网络地址,这可能不是他们想要的,然后有人会读它并从中学习(像我一样)会感到困惑。 但我不介意使用第一个链接的代码。正如我所说,拥有这样的解决方案会很好,不仅适用于我,也适用于其他正在学习pcap的人。 – Jan 2012-02-25 10:57:52