当前位置: 首页 > 知识库问答 >
问题:

用C程序获取Linux中的网络接口类型

盖和洽
2023-03-14

如何从Linux中的C程序获取网络接口的类型名?

我尝试使用getifaddr访问网络接口,得到了所需的一切,除了它的类型名。你知道怎么做吗?

eth0 Link encap:Ethernet HWaddr 00:0C:29:40:93:9C
inet addr:192.168.154.102 Bcast:192.168.154.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe40:939c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14785 errors:0 dropped:0 overruns:0 frame:0
TX packets:429 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:961439 (938.9 KiB) TX bytes:71866 (70.1 KiB)
Interrupt:67 Base address:0x2000

所以问题是,当我事先不知道使用什么接口以及机器中有多少接口时,我如何用C程序打印eth0、tap0、wlan0属于以太网类型,而LO->属于本地环回类型。

希望我能正确解释。

共有1个答案

杜彦君
2023-03-14

您可以尝试使用Netlink(1,2)中的RTNETLINK。有关示例,请参见使用RTNETLINK操作网络环境。

 类似资料:
  • 问题内容: 我需要收集所有接口名称,即使是目前还没有使用的接口名称。喜欢。 多次遍历同一接口名称。如何使用一次收集所有接口名称? 问题答案: 您可以检查getifaddrs中的哪些条目属于AF_PACKET系列。在我的系统上,似乎列出了所有接口:

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

  • 问题内容: 有谁知道C / C ++代码来查找可用的网络接口? 我一直在寻找一些代码,但是大多数时候它们都很复杂。有没有简单的方法可以做到这一点? 问题答案: 请参见getifaddrs手册页。最后有一个示例程序。

  • Since 8.0 getNetworkType 获取网络状态: 网络是否可用以及什么网络类型 使用方法 AlipayJSBridge.call('getNetworkType', function(result) { console.log(result.networkInfo); }); 代码演示 基本功能演示 <h1>点击获取网络信息,可以修改网络后再点击看看</h1> <a href

  • 问题内容: 看来android的java.net.NetworkInterface实现没有 byte [] getHardwareAddress()方法 http://developer.android.com/reference/java/net/NetworkInterface.html 我发现有几个论坛的人都试图这样做,但没有明确的答案,我需要获得一个跨设备的UUID,所以我不能依赖电话号码

  • 问题内容: 如何仅使用 proc 获得所有网络接口的(IPv4)地址?经过广泛的调查,我发现了以下内容: 使用,需要打开套接字并充分了解所有接口名称。在Linux上的任何手册页中也没有记录。 包含,但这是接口统计信息的列表。 包含,这正是我需要的,但需要IPv6。 通常,在中很容易找到接口,但是很少使用实际地址,除非在某些连接中有明确的一部分。 有一个名为的系统调用,这是Windows所期望的非常