嗨朋友们。我正在开发一个应用程序,我将返回特定系统的IP地址并将其保存在数据库中。当我检查数据库时,它显示服务器IP地址。我想获得运行该应用程序的特定IP地址。
到目前为止,我有这段代码:
Public Function GetIPAddress() As String
Dim strHostName As String = System.Net.Dns.GetHostName()
Dim strHostName1 As String = System.Net.Dns.GetHostName()
Dim ipHostInfo As System.Net.IPHostEntry = System.Net.Dns.Resolve(System.Net.Dns.GetHostName())
Dim ipAddress As System.Net.IPAddress = ipHostInfo.AddressList(0)
Return ipAddress.ToString()
End Function
答案 0 :(得分:1)
请记住,计算机可能有多个指向它的IP地址,因此这实际上是不可能的。好吧,无论如何不是理论上的 - 在实践中,你可能能够一起破解某些东西。
答案 1 :(得分:1)
毫无疑问,这是因为您的代码在服务器本身而不是客户端上运行。因此,当您要求提供IP地址时,它会忠实地将其提供给您。
在服务器上运行的任何解决方案(例如检查TCP会话的源IP地址)都必须记住,通过防火墙和网络地址转换以及保护我们免受坏人的网络的所有其他精彩功能,您获得的地址可能与客户端计算机的实际IP地址几乎没有相似之处。
您需要在客户端计算机上运行基本上可以执行相同操作的代码。请记住,客户端可能会分配许多IP地址。
仅在我的桌面计算机上,我有两个物理网卡,每个网卡有两个地址和多个用于VPN和VMWare映像的虚拟网卡。当然,我的桌面盒子不是普通的家用电脑,但是盒子有两个地址的可能性并非超出范围。
事实上,如果在DHCP上,单个机器可以很容易地更改其IP地址,并且它决定在其地址上释放租约并获得另一个。
总而言之,IP地址并不是衡量哪台机器正在运行的非常可靠的指标。也许如果你退一步向我们提供你想要实现的目标的更多细节,我们可以进一步提供帮助。
答案 2 :(得分:1)
使用以下代码获取客户端系统的IP。
string host=System.Net.Dns.GetHostName();
string ip = System.Net.Dns.GetHostByName(host).AddressList[0].ToString();
这里的ip地址给出了客户端的IP地址。
答案 3 :(得分:0)
也许这会有所帮助? - https://stackoverflow.com/a/23824592/2647808
看起来最好的方法是使用System.Net.Dns.GetHostName()。然后,您可以使用For循环和If语句提取IPv4地址或IPv6地址。希望有所帮助。