如何在 Linux 上使用 C 语言获取我的 IP 地址?

9
我该如何获取我的IP地址(最好是以192.168.0.1格式)?

1
请参考之前的问题 - Louis Hugues
我希望将其转换为C代码。 - Jelly
2
请查看此处:https://dev59.com/AnE95IYBdhLWcg3whOHK - Soosh
2
大多数情况下,const char* my_address = "127.0.0.1"; 是有效的。 - n. m.
您可能拥有多个IP地址。 - Basile Starynkevitch
2个回答

15

这个示例代码列出了您计算机上存在的所有IPv4网络接口的接口名称(例如loeth0)以及当前分配的IP地址:

这个示例代码列出了您计算机上存在的所有IPv4网络接口的接口名称(例如loeth0)以及当前分配的IP地址:

getifaddrs(&addrs);
tmp = addrs;

while (tmp) 
{
    if (tmp->ifa_addr && tmp->ifa_addr->sa_family == AF_INET)
    {
        struct sockaddr_in *pAddr = (struct sockaddr_in *)tmp->ifa_addr;
        printf("%s: %s\n", tmp->ifa_name, inet_ntoa(pAddr->sin_addr));
    }

    tmp = tmp->ifa_next;
}

freeifaddrs(addrs);

1
uClibc直到最近才包含getifaddrs。您知道在嵌入式设备上可以使用的其他方法吗? - Marki555

7

对于Linux系统:

要获取机器上的所有本地接口,请使用getifaddrs()函数。

上述链接页面末尾有一个示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接