服务器机器有多个IP,其中一个IP连接到本地LAN,另一个连接到WAN(Internet)。查找连接到PC上的InterNet的IP地址
服务器应用程序需要绑定IP和端口,以便它可以侦听客户端。 我能够得到所有Ip在其服务器机器中,但在寻找 活动IP即IP连接的互联网时面临问题。
以下代码将给出系统中的所有IP。
char chHostName[MAX_PATH];
if (gethostname(chHostName, sizeof(chHostName)) == SOCKET_ERROR)
{
return ;
}
struct hostent *phe = gethostbyname(chHostName);
if (phe == 0)
{
return ;
}
//struct in_addr addrLocalIP;
for (int i = 0; phe->h_addr_list[i] != 0; ++i)
{
memcpy(&m_addrLocal.sin_addr.S_un, phe->h_addr_list[i], sizeof(struct in_addr));
}
1.有没有办法找到这与许多互联网IP中的系统相连接的IP。
2.通过上述程序获取的最后一个IP始终是与Internet连接的IP吗?
对于1.你将不得不解析路由表,并假设默认网关是上行链路(通常是)2.我认为,如果没有特定接口上的traceroute,你永远无法确定。 – 0xC0000022L 2011-04-26 11:56:47
有没有办法知道。取决于程序控制之外的路径和路由表,零个或多个IP可以路由到互联网。 – Joe 2011-04-26 12:00:04