2011-04-26 30 views
0

服务器机器有多个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吗?

+0

对于1.你将不得不解析路由表,并假设默认网关是上行链路(通常是)2.我认为,如果没有特定接口上的traceroute,你永远无法确定。 – 0xC0000022L 2011-04-26 11:56:47

+0

有没有办法知道。取决于程序控制之外的路径和路由表,零个或多个IP可以路由到互联网。 – Joe 2011-04-26 12:00:04

回答

0

套接字不知道正在被用于他们。您的应用程序必须从配置文件或类似文件中获取Internet NIC的IP地址。