C#using Dns.GetHostEntry()返回另一个国家/地区的IP地址

时间:2013-11-12 11:34:10

标签: c# ip-address system.net

编辑:看起来这段代码只返回内部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,它只是一个计算机名称......)是一种奇怪的方式,但我相信这是正确的方法。怎么可能出错?

1 个答案:

答案 0 :(得分:0)

您的系统是否有任何静态IP地址?通常,我们使用动态IP(作为DHCP客户端)或办公室的本地IP地址。

Google可以显示您的ISP的IP地址,而不是本地系统;如果您没有使用静态IP地址。

您可以为本地系统使用任何IP,这可能属于您所在国家/地区的多个本地网络。

您的代码看起来非常好,它会显示本地IP地址。请通过网络配置确认。