我正在C++上实现UpNP,我需要获取由路由器分配的本地内部IP地址以使套接字工作。我需要的地址是出现在路由器上的地址,它显示连接到路由器的计算机和分配给每台计算机的本地IP。我用这:是 - > h_addr_list [0]我需要的地址?
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可能来自路由器。 – Joe 2011-05-19 00:37:49