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

获取Linux上接口的IP地址

慕麒
2023-03-14
问题内容

如何从C代码获取Linux上接口的IPv4地址?

例如,我想获取分配给eth0的IP地址(如果有)。


问题答案:

尝试这个:

#include <stdio.h>
#include <unistd.h>
#include <string.h> /* for strncpy */

#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <net/if.h>
#include <arpa/inet.h>

int
main()
{
 int fd;
 struct ifreq ifr;

 fd = socket(AF_INET, SOCK_DGRAM, 0);

 /* I want to get an IPv4 IP address */
 ifr.ifr_addr.sa_family = AF_INET;

 /* I want IP address attached to "eth0" */
 strncpy(ifr.ifr_name, "eth0", IFNAMSIZ-1);

 ioctl(fd, SIOCGIFADDR, &ifr);

 close(fd);

 /* display result */
 printf("%s\n", inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr));

 return 0;
}

代码示例是从这里获取的。



 类似资料:
  • 问题内容: 有没有办法使用libpcap在Linux中获取接口的IP地址? 我发现了这个, 获取Linux上一个接口的IP地址,但这不使用pcap。 此外,在PCAP例子是说,像这应该得到你的IP,但它给你的网络地址。 问题答案: 使用功能: 输出:

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

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

  • 问题内容: 我如何获得我的IP地址(最好是格式)? 问题答案: 此示例代码列出了计算机上存在的所有IPv4网络接口的接口名称(例如或)以及当前分配的IP地址:

  • 问题内容: 如何在接口内部获取值的地址? 我有一个结构存储在接口的list.List元素中: 但是我得到这个: 这是怎么回事?由于该结构存储在接口中,为什么我不能获得指向它的指针? 问题答案: 要了解为什么不可能这样做,考虑一下接口变量实际上是什么很有帮助。接口值占两个字,第一个描述所包含值的类型,第二个(a)保存所包含的值(如果它适合字内)或(b)指向该值的存储指针(如果该值不适合一个单词)。

  • 问题内容: 我正在尝试使用Java获取我的Internet IP地址,但是当我的IP地址为192.168.0.xxx时,我一直在获取本地地址(即:127.0.0.1) 我正在使用该行: 这似乎是获取IP地址的标准方法,但这不是我想要的。每个教程都说要使用此行,所以我有些困惑。 有人可以让我知道如何获取正确的IP地址吗? 我在连接到WiFi的设备上运行,但未使用任何电缆。我正在使用ifconfig