【发布时间】:2013-11-24 12:51:54
【问题描述】:
编辑:看起来这段代码只返回内部 IP。有没有办法使用 C# 找到我的外部 IP?
所以我一直在使用“标准”方法来获取您自己的 IP 地址:
IPAddress Own;
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
Own = ip;
}
}
问题是这给我的地址在英国某个地方,而我在澳大利亚 - 显然,当我向谷歌询问我自己的 IP 地址时,我得到的东西与这段代码给我的不同。
那么为什么这段代码不起作用?在我看来,使用 DNS 服务器来解析我自己的主机名(这不是 URL,它只是一个计算机名......)有点奇怪,但我相信这是正确的方法。可能出了什么问题?
【问题讨论】:
-
我的猜测是您获得了您的内部 IP 地址,并且它与英国的外部地址相同。
-
这段代码运行后你能识别出'Own'包含的IP吗?它是私有IP还是公共IP? www.whatismyip.com 说什么?您如何确定地址“在”另一个国家/地区?你到底想用这段代码做什么?
-
好吧,事实证明它正在返回一个内部 IP,但它是 hamatchi 内部 IP,这是一个英国外部 IP。在这种情况下,是否可以使用 C# 获取外部 IP?
-
这里已经回答了:stackoverflow.com/a/2353177
标签: c# ip-address system.net