ローカル IP ではなく、実際の IP を取得できる関数を探しています。私が現在持っている機能は、192.168.2.100 であるネットワークと共有センターの IP を返しますが、whatismyip に行くと、実際の IP が返されます。
VB.NET を使用してこれを取得するにはどうすればよいですか? ありがとう
上記の回答を組み合わせるには」 php ファイルを作成し、これを貼り付けます。
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
それを curip.php として保存し、サーバーにアップロードします。
VB.net プロジェクトでモジュールを作成します。最上部で imports セクションを宣言します
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()
あなたが望むようにそこからの値を使用してください。
VB.Net だけでこれを行う方法はありません。教えてくれるウェブサイトを見つける必要があります(おそらくあなた自身のウェブサイトですか?)、またはルーターとのインターフェースが必要です。
あらゆる種類の Web ページ アプリケーションを実行できる Web サイトがある場合は、クライアントの (ページに接続しているコンピュータのように) IP アドレスを単純に出力する Web ページを作成できます。
私は自分のものを持っています:
http://etoys.netortech.com/devpages/ip.asp
常にそこにあるとは保証できませんが、自分で作成する必要があります。
そこから、HttpWebRequestを使用してページのコンテンツをダウンロードするのは簡単なことです。
応答でパブリック IP アドレスを返す公開サイトを使用します。
ここでの重要な要素は次のとおりです。
これら 2 つの要因を考慮して、次の URL をお勧めします: http://wtfismyip.com/text IP アドレスのみをテキスト形式で返すという利点があります。次のバージョンもあります。
解析しやすい形式を選択してください。
私はおそらくここで冗談を言っているだけですが、あなたの「本当の」IPアドレスは、ローカルマシンのifconfig(ipconfig)によって返されるものだと思わずにはいられません。あなたの場合は 192.168.2.100 です。あなたとリモート エンドポイントの間でどのような NAT 変換またはトンネリングが行われても問題ではありません。問題がある場合は、アプリケーションを現在の環境でのみ動作させるようなことをしている可能性が高くなります。
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
このサブルーチンは、 を使用して Web ページに移動したときにのみトリガーされますWebBrowser.Navigate()
。
gotIP
ドキュメントの完了時にアクティブになる別のサブルーチンがあるため、ブール値が存在します。私はそれを複数回トリガーしたくありません。に慣れていない場合はWebBrowser
、Web ページが で十分にロードされていることを確認しますReadyState
。そうしないと、例外が発生する可能性があります (コンテンツが読み込まれないため)。
お好きなサイトをご利用いただけます。このサイトはタイトルにあなたのIPアドレスを入れているので良いです。title
タグが1つになるので、それは良いことです。このサイト (またはコンテンツ内に固有のタグがあるサイト) を使用できない場合は、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 ファイルを使用する必要はありません。ip-adress.com のような IP を示すサイトを使用し、そこから webrequest で IP を取得してから、GetBetween関数を使用します。
楽しんで :)