在 C++ 中,获取本地计算机的 IP 地址和子网掩码的最简单方法是什么?
我希望能够在我的本地网络中检测到本地机器的 IP 地址。在我的特殊情况下,我有一个子网掩码为 255.255.255.0 的网络,我的计算机的 IP 地址是 192.168.0.5。我需要以编程方式获取这些有两个值,以便向我的网络发送广播消息(对于我的特殊情况,格式为 192.168.0.255)
编辑:许多答案没有给出我预期的结果,因为我有两个不同的网络 IP。 Torial 的代码成功了(它给了我两个 IP 地址)。
编辑 2:感谢 Brian R. Bondy 提供有关子网掩码的信息。
原文由 djeidot 发布,翻译遵循 CC BY-SA 4.0 许可协议
此答案 的修改版本。
添加了头文件和库。
它也基于这些页面:
获取适配器地址
IP_ADAPTER_ADDRESSES_LH
IP_ADAPTER_UNICAST_ADDRESS_LH
简而言之,要获得 IPv4 地址,您调用
GetAdaptersAddresses()
来获得适配器,然后运行IP_ADAPTER_UNICAST_ADDRESS
结构以FirstUnicastAddress
Address
并获得---
字段,然后使用inet_ntop()
将其转换为可读格式。以以下格式打印信息:
可以编译:
或者,如果您需要在命令行中添加 libs 依赖项: