【发布时间】:2011-08-28 11:51:46
【问题描述】:
我正在努力在 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?
【问题讨论】:
-
没有。您无法从计算机上分辨出哪些 IP 来自哪里;如果计算机同时具有有线和无线适配器怎么办?在这种情况下,两个 IP 都可能来自路由器。
标签: c++ ip ip-address router upnp