gpt4 book ai didi

c - 在 Linux 中使用 pcap 获取接口(interface)的 IP 地址

转载 作者:IT王子 更新时间:2023-10-29 00:58:40 34 4
gpt4 key购买 nike

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

我发现了这个, Get IP address of an interface on Linux ,但这不使用 pcap。

此外,在 pcap 示例中据说类似 this 的东西应该获取您的 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

关于c - 在 Linux 中使用 pcap 获取接口(interface)的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9443288/

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