当前位置: 首页 > 面试题库 >

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

楚岳
2023-03-14
问题内容

有没有办法使用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


 类似资料:
  • 问题内容: 如何从C代码获取Linux上接口的IPv4地址? 例如,我想获取分配给eth0的IP地址(如果有)。 问题答案: 尝试这个: 代码示例是从这里获取的。

  • 问题内容: 在Linux上,如何使用python查找本地IP地址/接口的默认网关? 我看到了“如何获取UPnP的内部IP,外部IP和默认网关”的问题,但是公认的解决方案仅显示了如何获取Windows网络接口的本地IP地址。 谢谢。 问题答案: 对于那些不想额外依赖并且不喜欢调用子流程的人,可以通过直接阅读以下内容来自己做: 我没有要测试的大端字节序计算机,因此我不确定字节序是否取决于您的处理器体系

  • 问题内容: 到目前为止,我使用PyQt类所做的事情: 输出: 使用: 输出: 有没有办法区分它们? 可以使用普通的Python代替PyQt类吗? 如何获得IPv6地址? 问题答案: 您应该使用netifaces。它被设计为跨平台的,并且包含Windows专用代码以及可在不同UNIX / UNIX类平台上工作的各种通用版本。 从netifaces版本0.10.0开始,支持Python3。 使用摘要

  • 问题内容: 我想在Linux中使用C程序找到mac地址。怎么做? 问题答案: 通过Google搜索1分钟:(我自己尚未对其进行测试,此刻我正在Windows机器上工作)

  • 问题内容: 我想获取启动程序的计算机的IP地址,然后将其发送到客户端,但是我总是得到0.0.0.1而不是真实的IP地址(例如127.0.0.1)。 我目前可以获取端口,但无法获取IP地址。 我怎么才能得到它? 最好的解决方案是能够使用。这是我目前正在做的事情: 编辑: 我知道我的思维方式走错了路。所以我的问题是:获得自己的IP地址的最佳方法是什么? 问题答案: 当您将套接字设为0.0.0.0时,这

  • 我希望在连接到wifi网络时,在运行我的应用程序的手机上获取用户的本地IPv4地址。使用以下代码: 我可以得到一些接近IPv4地址的信息,但与命令行中的IPv4地址相比,它并不完全相同。有更好的办法吗?我知道formatIpAddress已被弃用,但在我找到获取IPv4地址的方法之前,我暂时不太担心这个问题。 编辑: 我发现手机wifi设置中的ip地址是我在使用建议的解决方案获取ip地址时得到的。