使用pcap获取Linux中接口的IP地址

有没有办法使用libpcap在Linux中获取接口的IP地址?

我发现了这个, 获取Linux上一个接口的IP地址,但这不使用pcap。

此外,在PCAP例子是说,像这应该得到你的IP,但它给你的网络地址。

回答:

使用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

以上是 使用pcap获取Linux中接口的IP地址 的全部内容, 来源链接: utcz.com/qa/422566.html

回到顶部