有没有办法使用libpcap在Linux中获取接口的IP地址?
我发现了这个, 获取Linux上一个接口的IP地址,但这不使用pcap。
此外,在PCAP例子是说,像这应该得到你的IP,但它给你的网络地址。
使用pcap_findalldevs功能:
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:
sudo ./pcap
eth0: 192.168.2.1 usbmon1: usbmon2: usbmon3: usbmon4: usbmon5: any: lo: 127.0.0.1