我正在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