2010-07-10 225 views
3

我如何獲得(在C++中)全球我的電腦(Windows XP)的IP地址?獲取全球IP地址

+0

你在什麼操作系統? – 2010-07-10 21:04:41

+3

注意:可能有多個**全局** IP地址。 – 2010-07-10 21:11:41

+0

最好的問題! – bodacydo 2015-07-21 01:19:54

回答

1

在windows上,您需要獲取本地主機名,然後將其傳遞給winsock2中的gethostbyname函數,該函數返回關聯的IP地址。

例子:http://tangentsoft.net/wskfaq/examples/ipaddr.html爲Linux

堆棧溢出的答案:

Get the IP address of the machine

+0

我知道如何找到本地IP,我想查找全球IP('s)。 – Ohad 2010-07-10 21:11:30

+0

這些方法將返回外部IP地址(非127.0.0.0/8) – 2010-07-10 21:14:58

+1

大多數計算機主機名將無法通過DNS解析,這似乎是您在第一段中建議的內容。 – Thanatos 2010-07-10 21:20:38

1

你將不得不作出像http://whatismyipaddress.com/網站的請求,並提取它的字符串,顯示你的IP。

+5

請注意,這違反了他們的服務條款「未經事先書面許可,您不得使用腳本,代理,應用程序或以其他方式自動查詢本網站。」 但是沒有什麼能夠阻止您託管自己的服務,該服務執行類似的任務來反彈您的請求。 – 2010-07-10 21:27:02

4

你不能。

您可以確定各個接口上的IP地址,並且可能有多個接口。這些可能是局域網IP(10.0.0.0/8,192.168.0.0/16等),或者它們可能是互聯網可路由的。

您似乎在問:「如果我有192.168.0.3,我該如何獲得我的互聯網IP?」沒有函數調用來做到這一點:這樣的IP可能存在,它可能不存在,甚至可能不止一個。

最接近你可以得到的是在互聯網上有一臺已知的計算機告訴你:連接到其他機器,並要求他們發回他們認爲你的IP地址是。這裏有幾個網站,有些甚至可能有API來做到這一點。

我覺得有些家庭路由器可能也可以通過uPnP告訴你,但是這又不包括所有可能的情況。