我正在尋找一個功能,將給我我真實的IP,而不是我的本地IP。我現在的功能,返回在網絡和共享中心的IP是192.168.2.100 但是,如果我去whatismyip,那麼它會給我真正的IP。用VB.NET獲取「真實」IP地址?
我怎麼能得到這個使用VB.NET? 謝謝
我正在尋找一個功能,將給我我真實的IP,而不是我的本地IP。我現在的功能,返回在網絡和共享中心的IP是192.168.2.100 但是,如果我去whatismyip,那麼它會給我真正的IP。用VB.NET獲取「真實」IP地址?
我怎麼能得到這個使用VB.NET? 謝謝
有沒有辦法只用VB.Net做到這一點。你需要找到一個能夠告訴你的網站(可能是你自己的?),或者你需要與你的路由器連接。
如果您的網站能夠運行任何類型的網頁應用程序,您可以創建一個簡單地輸出客戶端(如在連接到該頁面的計算機中)IP地址的網頁。
我有我自己的一個:
http://etoys.netortech.com/devpages/ip.asp
雖然我不能保證它永遠在那裏這就是爲什麼你應該讓你自己。
從那裏使用HttpWebRequest來下載頁面的內容很簡單。
結合的答案上述」 創建一個PHP文件,並粘貼在它:
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
保存爲curip.php並把它上傳到你的服務器
在你VB.net。項目創建一個模塊 聲明進口部分在最高層
Imports System.Net
Imports System.IO
並創建功能:
Public Function GetIP() As String
Dim uri_val As New Uri("http://yourdomain.com/curip.php")
Dim request As HttpWebRequest = HttpWebRequest.Create(uri_val)
request.Method = WebRequestMethods.Http.Get
Dim response As HttpWebResponse = request.GetResponse()
Dim reader As New StreamReader(response.GetResponseStream())
Dim myIP As String = reader.ReadToEnd()
response.Close()
Return myIP
End Function
現在,在你的代碼的任何地方,你可以發出
Dim myIP = GetIP()
的,你想從那裏使用的值。
我可能只是在這裏crotchety,但我不禁想到你的「真正的」IP地址是由本地機器上的ifconfig(ipconfig)返回的IP地址。 192.168.2.100你的情況。無論您與遠程端點之間進行NAT轉換或隧道傳輸都無關緊要,如果這樣做,您很可能會做出一些可能使您的應用程序僅適用於當前環境的操作。
你不需要使用一個PHP文件只是使用一個網站,顯示你的IP像ip-adress.com,然後從那裏用網絡請求的IP,然後使用GetBetween功能。
玩得開心:)
我會用它響應返回你的公網IP地址公開提供的網站。
這裏的關鍵因素是:
銘記這兩個因素我會推薦這個網址:http://wtfismyip.com/text它返回只有的IP地址以文本形式的優勢。也有版本:
挑選一個更容易爲你解析格式。
使用PHP它可以簡單地完成:
作爲 「shaiss」 共享PHP代碼,這是VB.net代碼:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim myip As HttpWebRequest = HttpWebRequest.Create("http://YourHosting.com/curip.php")
Dim grab As HttpWebResponse = myip.GetResponse()
Dim stream As Stream = grab.GetResponseStream
Dim SR As New StreamReader(stream)
TextBox1.Text = SR.ReadToEnd()
End Sub
End Class
這僅僅是一個例子:
1 - 表格
1 - 文本框
1 - 按鈕(多個)
希望這有助於!
我有同樣的問題,並搜索了一下,只記得我可以用WebBrowser做到這一點!
Private Sub getExtIP() Handles activeProjectsWB.DocumentCompleted
If gotIP = False And populateProjectCollectionBLN = True Then
If activeProjectsWB.ReadyState = WebBrowserReadyState.Interactive Or activeProjectsWB.ReadyState = WebBrowserReadyState.Complete Then
Dim unformattedExtIP As String = activeProjectsWB.Document.GetElementsByTagName("title").Item(0).OuterHtml
Dim onlyIPAddress As String = String.Empty
For Each character In unformattedExtIP
Dim result As Integer = 0
If Not (Integer.TryParse(character, result) = 0) Or character = "." Then
onlyIPAddress = onlyIPAddress & character
End If
Next
extIP = onlyIPAddress
gotIP = True
End If
End If
End Sub
當您使用WebBrowser.Navigate()
導航到網頁時,僅觸發此子例程。
gotIP
布爾值存在,因爲我有另一個子例程在任何文檔完成時激活。我不希望它被觸發不止一次。如果您對WebBrowser
不熟悉,請檢查網頁是否已使用ReadyState
加載。如果你不這樣做,你可能會得到一個異常(因爲內容沒有加載)。
您可以使用您喜歡的任何網站。這個網站是不錯的,因爲它會把你的IP地址放在標題中。這很好,因爲會有一個title
標籤。如果您不能使用本網站(或其中包含您的內容的唯一標籤),請使用For Each
循環。
For Each instance As HtmlElement In activeProjectsWB.Document.GetElementsByTagName("InsertTagHere")
'do something to find the tag that contains your IP address
Next
不熟悉php,但是您使用的腳本是否依賴於HTTP頭來檢索IP?如果是這樣,用戶可以操縱這些來指定他們想要的任何IP地址。這可能不是一個大問題,但需要考慮。 – 2009-08-14 23:42:02
這是一個很好的觀點。但是,從vb.net應用程序調用php文件以來,唯一可以這樣做的方式是用戶必須使用代理服務器。 但是,應該考慮使用這種情況的特定情況。 – shaiss 2009-08-18 16:29:11