2011-04-26 36 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地址。