gpt4 book ai didi

c++ - ->h_addr_list[0] 是我需要的地址吗?

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:04 24 4
gpt4 key购买 nike

我正致力于在 C++ 上实现 UpNP,我需要获取路由器分配的本地内部 IP 地址以使套接字正常工作。我需要的地址是出现在路由器上的地址,它显示连接到路由器的计算机以及分配给每台计算机的本地 IP。我正在使用这个:

PHOSTENT      Addr    = NULL;
char Host[MAX_PATH];

if( gethostname(Host, sizeof(Host)) == 0 )
{
Address = gethostbyname( Host );
if( Address != NULL )
{
//*(struct in_addr *)Address->h_addr_list[0]) <- this is my address
}
}

这在我正在测试的计算机上工作正常,但是那台计算机只有一个网卡,所以我想知道当一台计算机有多个网卡或网络设备时,Address->h_addr_list[0] 可能不是我需要的,它可能在该数组的另一个索引中。

[0] 是否总是检索路由器分配的 IP?

最佳答案

(假设这里是 winsock,按照前面的问题)

您不应该假设第一个地址是正确的(因为可能有多个接口(interface),并且可能有多个接口(interface)处于事件状态)

我建议使用 getaddrinfo 枚举地址使用空的 pNodeName 参数,或 GetAdaptersAddresses .

这两个都返回一个链接列表,其中包含您系统的注册地址

关于c++ - ->h_addr_list[0] 是我需要的地址吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052529/

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