我正在寻找能够提供真正IP的功能,而不是我的本地IP。我目前拥有的功能,返回网络中的IP和共享中心192.168.2.100 但如果我去了whatismyip,那么它就会给我真正的IP。
我怎么能用VB.NET搞定这个? 感谢
答案 0 :(得分:5)
结合上述答案“ 创建一个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()
使用你想要的值。
答案 1 :(得分:4)
使用VB.Net无法做到这一点。您需要找到一个会告诉您的网站(可能是您自己的一个?),或者您需要与路由器连接。
如果您的网站能够运行任何类型的网页应用程序,您可以创建一个网页,只需输出客户端(如连接到该页面的计算机中)IP地址。
我有自己的一个:
http://etoys.netortech.com/devpages/ip.asp
虽然我不能保证它会永远存在,这就是为什么你应该自己做的。
从那里可以轻松使用HttpWebRequest下载页面内容。
答案 2 :(得分:1)
我可能只是在这里喋喋不休,但我不禁想到你的“真正的”IP地址是你本地机器上的ifconfig(ipconfig)返回的IP地址。在你的情况下192.168.2.100。无论您与远程端点之间的NAT转换或隧道连接都无关紧要,如果确实如此,您很可能会做一些可能使您的应用程序仅在您当前环境中工作的事情。
答案 3 :(得分:1)
我会使用一个公开的网站来回复您的公共IP地址。
这里的关键因素是:
请注意这两个因素我建议使用此网址:http://wtfismyip.com/text它的优点是只能以文本形式返回 IP地址。还有以下版本:
选择更易于解析的格式。
答案 4 :(得分:0)
您不需要使用php文件只需使用显示您的ip的网站,如ip-adress.com,然后使用webrequest从那里获取ip,然后使用GetBetween功能。
玩得开心:)
答案 5 :(得分:0)
使用PHP可以简单地完成:
As&#34; shaiss&#34;共享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 - TextBox
1 - 按钮
希望这有帮助!
答案 6 :(得分: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
只有在使用WebBrowser.Navigate()
导航到网页时才会触发此子例程。
存在gotIP
布尔值,因为我有另一个子程序在任何文档完成时激活。我不希望它不止一次被触发。如果您不熟悉WebBrowser
,请检查以确保网页已加载ReadyState
。如果你不这样做,你可能会遇到异常(因为内容没有被加载)。
您可以使用您喜欢的任何网站。这个网站很好,因为它将您的IP地址放在标题中。这很好,因为它将成为一个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