【问题标题】:Get ip address in vb.net在 vb.net 中获取 IP 地址
【发布时间】:2010-09-09 05:57:15
【问题描述】:

我想在 vb.net 中获取当前的互联网 IP 地址。我不想要本地主机 IP 地址。 like as (http://www.ipchicken.com/网站返回ip地址)

【问题讨论】:

  • 这个问题没有通用的解决方案。有 NAT 和动态代理,还有很多其他的东西。您能否退后一步描述一下您要解决的问题,这导致您决定需要查找机器的互联网 IP 地址?

标签: vb.net ip-address ip


【解决方案1】:

我了解您想要的是您在互联网上显示的 IP 地址,而不是您的内部网络 IP。我在某个地方有一些代码,我会为你挖掘出来,但它基本上是由这个组成的(来自记忆):

就像我说的那样,我会尝试挖掘代码,但这对于你来说应该是足够的信息了:-)

【讨论】:

    【解决方案2】:

    这样的东西应该会获取您当前的公共 IP。

    Public Class Form1
    
        Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
            AddHandler wb.DocumentCompleted, AddressOf wb_DocumentCompleted
        End Sub
    
        Public WithEvents wb As New WebBrowser
        'before using wb add
        'AddHandler wb.DocumentCompleted, AddressOf wb_DocumentCompleted
        Private Sub GetPubIP()
            Try
                'the site returns a string like "Current IP Address: 69.59.196.211"
                wb.Navigate(New Uri("http://checkip.dyndns.org"))
            Catch ex As Exception
                'add error checking
            End Try
        End Sub
    
        Private Sub wb_DocumentCompleted(ByVal sender As Object, _
                                         ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
            'parse the reply
            Dim parts() As String = wb.Document.Body.InnerText.Split(":"c)
            Debug.WriteLine(parts(1).Trim)
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, _
                                  ByVal e As System.EventArgs) Handles Button1.Click
            GetPubIP()
        End Sub
    End Class
    

    【讨论】:

      【解决方案3】:

      这就是您要查找的内容。我写了一个简单的PHP脚本,调用时返回IP地址,然后写了这段VB.Net代码随时调用:

         Public Function jnWhatIsMyExternalIP() As String
            Dim strURL As String = "http://www.mycompanywebsite/jnNetworkTools/jnCheckIP.php"
      
            Dim Request As System.Net.WebRequest = System.Net.WebRequest.Create(strURL)
            Dim Response As System.Net.WebResponse = Request.GetResponse()
      
            Dim Reader As New System.IO.StreamReader(Response.GetResponseStream())
            Dim strMyIP As String = Reader.ReadToEnd()
      
            Return strMyIP
         End Function
      

      这是 jnCheckIP.php 中的 PHP 代码:

      <?php
      echo $_SERVER['REMOTE_ADDR'];
      ?>
      

      调用 VB.Net 函数会导致用户机器调用您服务器上的 PHP 脚本,然后返回用户 IP 地址。

      【讨论】:

        【解决方案4】:

        只有当您的主机(PC)具有静态互联网 IP 地址时,您才能知道真实 IP 地址,而不是像 194.x.x.x 或 10.x.x.x 和其他 http://en.wikipedia.org/wiki/Private_network 否则尝试向 www.ipchicken.com 或其他http://www.google.ru/search?hl=en&q=my+ip+address 等服务发送 http 请求以了解您的 IP 地址

        【讨论】:

        • 嗨,感谢您的回复,但如何在 vb.net 中返回该值。请告诉该代码
        【解决方案5】:

        【讨论】:

        • 嗨,我不想要本地 IP 地址。我想要连接的调制解调器 IP 地址。即 ipchicken 网站返回该 IP 地址
        • 确保编码正是这样做的
        • 将 ipEntry 作为 IPHostEntry = Dns.GetHostByName(www.ipchicken.com) 将 IpAddr 作为 IPAddress() = ipEntry.AddressList
        【解决方案6】:
        Function GetIP() As String
            Dim IP As New WebClient
            Return IP.DownloadString("http://icanhazip.com/")
        End Function
        

        【讨论】:

          猜你喜欢
          • 2016-03-10
          • 1970-01-01
          • 2013-01-24
          • 1970-01-01
          • 2010-12-15
          • 1970-01-01
          • 2010-11-04
          • 2013-08-09
          • 1970-01-01
          相关资源
          最近更新 更多