4

ローカル IP ではなく、実際の IP を取得できる関数を探しています。私が現在持っている機能は、192.168.2.100 であるネットワークと共有センターの IP を返しますが、whatismyip に行くと、実際の IP が返されます。

VB.NET を使用してこれを取得するにはどうすればよいですか? ありがとう

4

7 に答える 7

5

上記の回答を組み合わせるには」 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()

あなたが望むようにそこからの値を使用してください。

于 2009-08-14T23:25:32.403 に答える
4

VB.Net だけでこれを行う方法はありません。教えてくれるウェブサイトを見つける必要があります(おそらくあなた自身のウェブサイトですか?)、またはルーターとのインターフェースが必要です。

あらゆる種類の Web ページ アプリケーションを実行できる Web サイトがある場合は、クライアントの (ページに接続しているコンピュータのように) IP アドレスを単純に出力する Web ページを作成できます。

私は自分のものを持っています:

http://etoys.netortech.com/devpages/ip.asp

常にそこにあるとは保証できませんが、自分で作成する必要があります。

そこから、HttpWebRequestを使用してページのコンテンツをダウンロードするのは簡単なことです。

于 2009-08-07T01:41:47.080 に答える
1

応答でパブリック IP アドレスを返す公開サイトを使用します。

ここでの重要な要素は次のとおりです。

  1. サービスの可用性。独自のサービスを実行すると、それを完全に制御し、いつ利用可能でいつ利用できないかを知ることが保証されます。しかし、場合によっては、このような単純なタスクにはあまりにも多くの作業が必要になることがあります。
  2. 応答に含まれる余分な混乱を最小限に抑えます。パブリック IP アドレスを取得できるサイトはたくさんありますが、多くの場合、HTML ページの形式で取得します。IP アドレスを含むページの小さなフラグメントを抽出するには、追加のコードが必要になる場合があります。

これら 2 つの要因を考慮して、次の URL をお勧めします: http://wtfismyip.com/text IP アドレスのみをテキスト形式で返すという利点があります。次のバージョンもあります。

解析しやすい形式を選択してください。

于 2013-01-12T22:06:21.773 に答える
1

私はおそらくここで冗談を言っているだけですが、あなたの「本当の」IPアドレスは、ローカルマシンのifconfig(ipconfig)によって返されるものだと思わずにはいられません。あなたの場合は 192.168.2.100 です。あなたとリモート エンドポイントの間でどのような NAT 変換またはトンネリングが行われても問題ではありません。問題がある場合は、アプリケーションを現在の環境でのみ動作させるようなことをしている可能性が高くなります。

于 2009-08-14T23:38:58.820 に答える
0

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 - ボタン

お役に立てれば!

于 2015-02-14T03:57:31.800 に答える
0

同じ質問があり、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
于 2015-06-06T05:37:57.060 に答える
0

php ファイルを使用する必要はありません。ip-adress.com のような IP を示すサイトを使用し、そこから webrequest で IP を取得してから、GetBetween関数を使用します。

楽しんで :)

于 2013-01-12T21:32:38.427 に答える