我的理解是,.NET(版本3.5到4.5.2,在我的測試)將返回的IPv6爲兩個冒號地址,這樣的 -
Dim host As String = Dns.GetHostName()
Dim ip As IPHostEntry = Dns.GetHostEntry(host)
Console.WriteLine(ip.AddressList(0).ToString())
Console.ReadKey()
輸出fe80 :: 2d36:51be:16dc:257b%36在我的情況下,通過網關到ADSL調制解調器的無線連接。 我對你的問題感興趣的是我想返回IPv4地址,我知道它是203.214.36.136(直到我重置調制解調器)。我可以看到,通過登錄到我的ISP,或者使用類似這樣的代碼 -
Using client = New WebClient()
Dim ret As String = client.DownloadString("http://icanhazip.com/").Trim()
Console.WriteLine(ret)
Console.ReadKey()
client.Dispose()
End Using
使用將返回IPv4的IP地址(我可以驗證該網頁是正確的雙方登錄到我的ADSL調制解調器,進入我的ISP的網頁)。我不確定頁面上的哪些代碼會重定向以返回IP地址(我從一個SO回答中複製了這個問題,它也處理IP地址)。
嘗試使用.MaptoIPv4的代碼(當然,我使用VS2012或2013,使用.NET v4.5)我還爲ipv4(您的變量)使用了空值,但是從我的第一個代碼返回的字符串值上面的塊,爲您的可變strIP。
失敗。
我仍然試圖擺脫這些方法應該如何使用。
其實,我錯在假設主機AddressList中的第一個IP地址是我想要的。其中有3個,其中有2個是IPv6,還有一個是我的調制解調器的網關。
所以我沒有貢獻太多的解決方案。抱歉。
轉換被錯誤地使用。將編輯它。 – user907810