我正在努力在 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
}
}
这在我正在测试的计算机上运行良好,但是那台计算机只有一个网卡,所以我想知道当一台计算机有多个网卡或网络设备时,地址->h_addr_list[0]可能不是我的那个需要,它可能在该数组的另一个索引中。
[0]是否总是检索路由器分配的 IP ?