获得;“真正的”;VB.NET的IP地址?
我正在寻找一个功能,将给我真正的IP,而不是我的本地IP。我当前拥有的函数返回网络和共享中心中的ip,即192.168.2.100 但如果我去whatismyip,那么它会给我真正的IP 如何使用VB.NET获取此信息?获得;“真正的”;VB.NET的IP地址?,vb.net,ip,Vb.net,Ip,我正在寻找一个功能,将给我真正的IP,而不是我的本地IP。我当前拥有的函数返回网络和共享中心中的ip,即192.168.2.100 但如果我去whatismyip,那么它会给我真正的IP 如何使用VB.NET获取此信息? 谢谢仅仅用VB.Net是无法做到这一点的。你需要找到一个网站,告诉你(也许是你自己的?)或者你需要与你的路由器接口 如果您有一个能够运行任何类型的网页应用程序的网站,那么您可以创建一个只输出客户端(如连接到该网页的计算机)IP地址的网页 我有一个自己的: 虽然我不能保证它会一
谢谢仅仅用VB.Net是无法做到这一点的。你需要找到一个网站,告诉你(也许是你自己的?)或者你需要与你的路由器接口 如果您有一个能够运行任何类型的网页应用程序的网站,那么您可以创建一个只输出客户端(如连接到该网页的计算机)IP地址的网页 我有一个自己的: 虽然我不能保证它会一直存在,这就是为什么你应该做你自己的
从这里,只需使用a下载页面内容即可。将上述答案结合起来。” 创建一个php文件并将其粘贴到其中:
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
并创建您的函数:
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转换或隧道传输都不重要,如果是这样,您很有可能正在做一些事情,使您的应用程序只能在您当前的环境中工作。您不需要使用php文件,只要使用一个像ip-adress.com一样ows您的ip,然后使用webrequest从那里获取ip,然后使用函数
玩得开心:)我会使用一个公共可用的站点,返回您的公共IP地址作为响应 这里的关键因素是:
- JSON:
- XML:
选择更易于解析的格式。使用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 instance As HtmlElement In activeProjectsWB.Document.GetElementsByTagName("InsertTagHere")
'do something to find the tag that contains your IP address
Next
不熟悉php,但是您使用的脚本是否依赖于HTTP头来检索IP?如果是,用户可以操纵这些头来指定他们想要的IP地址。这可能不是一个很大的问题,但需要考虑。这是一个很好的观点。然而,唯一的方法是这样做,我可以想到sin当vb.net应用程序调用php文件时,用户必须使用代理服务器。但是,是的,应该考虑使用代理服务器的特定情况。
For Each instance As HtmlElement In activeProjectsWB.Document.GetElementsByTagName("InsertTagHere")
'do something to find the tag that contains your IP address
Next