【发布时间】:2013-03-11 08:06:00
【问题描述】:
我尝试获取正确的 IP 但我不能
我正在使用此代码:
{
IPHostEntry host;
string localIP = "?";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
localIP = ip.ToString();
}
}
return localIP;
}
但这对我不起作用!
例如,我的真实 IP 是 151.246.147.86,但使用此代码我会得到 192.168.1.2。
注意:我有 4 个网络适配器,并且在带有 IPConfig 的 DOC 中我看到了这个:
Network adapter: Local Area Connection 6
Media state : Media disconnected
Network adapter: Local Area Connection 4
Media state : Media disconnected
Network adapter: Local Area Connection 3
IP Address: 10.10.255.222
Network adapter: Local Area Connection
IP Address: 192.168.1.2
现在我连接到网络并使用“本地连接”;我的 WAN 连接的公共 IP 是 151.246.147.86。我想获取这个公网IP(151.246.147.86),怎么办?
注意:我不希望(而且我不能,因为我使用的是 VPN)使用第三方网站来获取我的 IP
请帮忙!
--------编辑:-------------
注意:我从 VPN 使用,我的 VPN IP(例如)是:176.227.197.111。但是我的 WAN 的 IP 是:151.246.147.86,我想得到这个地址。
【问题讨论】:
-
不能自己获取自己的外部IP。您必须向 Internet 上的服务器询问您的 IP。示例:将此 PHP 脚本添加到您的网络服务器
<?php echo $_SERVER["REMOTE_ADDR"]; ?>,以便您获得类似 this 的内容。现在您可以让您的应用程序获取该 URL 的内容。 -
我的猜测:您使用的是路由器/调制解调器,因此 192.168.1.2 是您的“真实 IP”。您的调制解调器将位于同一(专用)网络上,其公共接口 (WAN) 将具有公共 IP。因此,您需要在调制解调器/路由器的公共接口上获取 IP。
-
@fnkr 实际上,如果路由器支持 UPnP 之类的东西,它可能是可能的。 Sara,你有哪种调制解调器/路由器?
-
另外,另一种方法是跟踪路由已知的外部地址(谷歌?)第一跳将是您自己的路由器...
-
@fnkr : 好的,但是如果我从 VPN 使用我怎么能得到真正的 IP !!!!!! :|我不能!!!所以,我想找到我的真实IP,我该怎么做?
标签: c# ip-address