服務器機器有多個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