【发布时间】:2015-06-13 23:25:50
【问题描述】:
在我的程序中,我正在像这样获取本地机器的公共 IP 地址
public static IPAddress getIPAddress()
{
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
foreach (IPAddress addr in localIPs)
{
if (addr.AddressFamily == AddressFamily.InterNetwork)
{
return addr;
}
}
return null;
}
而且在我住的地方工作得很好。
现在我在朋友家,我通过 Wi-Fi 连接到互联网,这段代码没有给我我的外部 IP 地址,它可能与路由器设置有关,但我不是对网络非常熟悉...
路由器是TP-LINK,我可以这样访问它的设置
顺便说一句,8080端口正是我需要的,我只需要能够访问我的公共IP。我该怎么做?
【问题讨论】:
-
Dns.GetHostName在这种情况下返回什么? -
仅限内部 IP 地址
-
这听起来像在家里,你直接连接到你的路由器,它没有进行网络地址转换,所以你得到了你的路由器的 IP 地址。你朋友的路由器正在执行 NAT,这意味着每台机器都有一个私有 IP,比如 192.168.blah.blah 或 10.blah。在这种情况下,您需要以某种方式与路由器通信并询问其 IP 地址是什么。
-
是的,我在家通过电缆连接到路由器
-
如果不询问外面的人(或通过一些私人魔法与 NAT 框交谈),您将无法获得外部可见的 IP 地址
标签: c# ip-address