質問

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

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

役に立ちましたか?

解決

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

あなたは、Webページのアプリケーションの任意の並べ替えを実行することのできるウェブサイトを持っている場合は、

あなたは単にクライアントのIPアドレス(ページに接続しているコンピュータのように)を出力Webページを作成することができます。

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

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()

あなたが望むように、そこから値を使用してます。

私はおそらくちょうどここ奇態なことだけど、私は助けるが、あなたの「本当の」IPアドレスはローカルマシン上でifconfigコマンド(IPCONFIG)によって返されたものであると考えることはできません。あなたのケースでは192.168.2.100。どのようなNAT変換またはトンネリングあなたとは関係ないはずリモートエンドポイントの間に行き、それがない場合、あなたはあなたのアプリケーションは、あなたの現在の環境で動作させる可能性が何かをやっているの良いチャンスがあります。

私なら、応答としてパブリック IP アドレスを返す、公開されているサイトを使用します。

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

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

これら 2 つの要素を念頭に置いて、この URL をお勧めします。 http://wtfismyip.com/text 返せるメリットがある のみ テキスト形式の IP アドレス。次のバージョンもあります。

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

PHPファイルを使用する必要はありません。ip-adress.comのようなIPを表示するサイトを使用し、そこからwebrequestで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 - ボタン(S)

この情報がお役に立てば幸い!

私は、同じ質問を持っていたし、私はWebブラウザーでこれを行うことができますことを覚えておくことは少しだけを検索!

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()を使用してWebページに移動したときに

このサブルーチンにのみトリガされます。

私は、任意のドキュメント完了時にアクティブに別のサブルーチンを持っているので、

gotIPブールが存在します。私はそれが複数回トリガーされないようにします。あなたはWebBrowserに慣れていない場合は、WebページがReadyStateと十分にロードされている確認してください。そうしないと(内容がロードされていないので)、あなたが例外を取得することがあります。

あなたが好きな方、サイトを使用することができます。それはタイトルにあなたのIPアドレスを置くので、このサイトは良いです。 1個の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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top