【问题标题】:How can we know our own external ip address on the client我们如何在客户端知道我们自己的外部IP地址
【发布时间】:2013-04-10 16:43:23
【问题描述】:

我们如何知道我们自己在客户端(=我们的计算机)上的外部 IP 地址;不是我们的内部 IP 地址,不是通过现有网站,也不是通过我们为这个问题制造的新网站;仅使用纯客户端操作系统命令脚本和/或 JavaScript?那可能吗?事实上,如果有人作为这样做的一种方式,他们应该收取 100 万美元,因为据我所知,没有人在这个星球上的任何网站上提出过这个问题的答案,A.R.

【问题讨论】:

  • 好的,C#(或Java等)也可以根据问题使用,尽管如果有可能它会给出更复杂的答案。 A.R.

标签: ip ip-address


【解决方案1】:

我认为有人 DID ask that already,但使用的是 C#

IPHostEntry host;
string localIP = "?";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
    if (ip.AddressFamily == AddressFamily.InterNetwork)
    {
        localIP = ip.ToString();
    }
}
return localIP;

我不知道您的目标操作系统,但您可以创建一个控制台应用程序并从中读取值

希望对你有帮助

【讨论】:

  • 我会尝试,如果不满意,请查看您所指的其他问题,非常感谢。 A.R.
【解决方案2】:

正如 Gricha 所说,它可以通过外部站点请求。还有一个开源项目也被托管。

您可以通过调用此 API 以 JSON 格式获取您的外部 IP 信息:

curl http://ip2country.sourceforge.net/ip2c.php?format=JSON

在C#中,必须有类似的方法来调用Web API。

项目信息在这里:http://code.google.com/p/ip-address/

【讨论】:

    【解决方案3】:

    您无法从简单的系统调用中找到外部 IP 地址。您可以从路由器接收它,这可能是特定于路由器的,或者您需要从局域网外的某个地方拨打电话。通常这是通过 HTTP 请求或其他一些流行的 Internet 服务完成的。

    此外,本地网络上的个别计算机没有外部 IP。路由器有一个地址并将数据包转发到单个设备。

    【讨论】:

    • 感谢您的回答,但不幸的是,您不会因此获得一百万美元...另外,我们可以说如果不存在,它应该(在这个可怕的信息时代)。 ..
    【解决方案4】:

    如果不退出当前网络,您将无法做到这一点。

    要知道您的 IP 地址,您需要询问您的路由器。是您的路由器为您提供他网络中的 IP。

    要知道在其网络中属于您的路由器的 IP 地址 - 您需要向该网络中的某个人询问您的 IP。因为那个网络给了他一个IP。

    最后,如果您想知道您的 ISP 网络之外的 IP - 您需要询问您的 ISP 网络之外的人

    【讨论】:

    • 我并没有提出您无法访问网络来获取它的条件,只是您无法通过外部手段进行...主要是信息丰富,但无论如何感谢 A.R.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2021-10-04
    • 2013-10-19
    相关资源
    最近更新 更多