gpt4 book ai didi

c - 是否有符合 POSIX 标准的方法来获取我的计算机的本地网络 IP 地址?

转载 作者:太空狗 更新时间:2023-10-29 16:08:54 26 4
gpt4 key购买 nike

我知道这个问题已经以一种或另一种形式被问了一百万次,但没有一个问题给我提供了一种符合 POSIX 标准的方法。

我需要使用getifaddrs 或任何其他不符合POSIX 的接口(interface)访问方式来获取我的计算机的本地网络地址。这可能吗?

最佳答案

没有直接支持这样的事情,但您可以使用 udp 套接字 (SOCK_DGRAM) 来连接到一个已知的远程地址。由于 udp 套接字是无状态的,因此不会产生任何网络流量。

然后您可以查询该套接字的本地端点 (getsockname) 以获取您的系统路由的本地 IP 地址。同样,由于 udp 是无状态的,这只会查询您的本地路由表,不会发出真正的网络流量。

之后不要忘记关闭套接字。

远程公共(public)域名服务器很适合这个目的。您可以测试其中的几个

  • 其中一个可能偶尔出现故障或者可能没有路由到世界那个地方的一些原因
  • 您的进程可能与服务器在同一个本地网络上,而您可能只会获得一些特殊的本地地址
  • 测试 IPv4 和 IPv6 地址

关于c - 是否有符合 POSIX 标准的方法来获取我的计算机的本地网络 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8645566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com