【问题标题】:get IP address of local machine on c++在 C++ 上获取本地机器的 IP 地址
【发布时间】:2014-04-30 06:47:18
【问题描述】:

我想检索我的计算机的 IP 地址(与我在 http://www.whatsmyip.org/ 上获得的相同) 我有一个win32项目。

This 是我正在使用的代码,因为我没有找到任何关于此的教程,我可以获得以下信息,但不是我在 whatsmyip.org 上看到的我的计算机的 IP 地址:(

我在whatsmyip.org上得到的IP是116.x.x.x开头的

【问题讨论】:

  • 我已经链接了它,gist.github.com/yoggy/1241986我使用相同的代码。
  • 你应该在你的问题中发布代码。
  • 没问题,会的:)
  • 你试过ipconfig吗?
  • @mcalex 我刚刚尝试过,我没有得到我在 whatsmyip.org 上获得的 IP .. 很奇怪,我得到 192.168.2.3 我已经连接到我的 Mac 的共享 wifi,这可能是原因吗我得到了这些结果?

标签: c++ winapi ip winsock


【解决方案1】:

您的代码获取本地的适配器地址。如果您想要您的 Internet 地址,则需要使用 Internet,而不是本地网络。您需要复制询问外部站点它看到您从哪个 IP 连接的功能。请参阅here 了解有关如何执行此操作的一些建议。

检索http://icanhazip.com 即可。你可以使用任何你喜欢的 HTTP 库。

【讨论】:

  • 好的,听起来不错,试完后会发布结果,谢谢
  • 如果您需要外部 IP 来连接互联网上的某些服务,使用该服务检索您的 IP(如果可能)比使用您没有的外部服务更有意义控制。
  • 好的,我已经在我的项目中设置了 cURL,我想我可以像这样使用它-curl_easy_setopt(curl, CURLOPT_URL, "http://icanhazip.com");
【解决方案2】:

分配给您机器的 IP 不一定是您在本地网络之外看到的 IP(例如在 whatsmyip.org 中)。

您的机器没有通过有效的静态 IP 直接连接到 Internet。也许你在 NAT 后面。因此,在许多情况下,您无法通过列出本地分配的 IP 来确定您在 Internet 上的有效 IP。

要找出您在 Internet 中的 IP 地址,您可以通过两种方式。通过 Internet 向某人询问(例如,使用 whatsmyip.org)。或者,递归查询您的本地网络(这不是一件容易的事)

【讨论】:

    猜你喜欢
    • 2012-09-29
    • 1970-01-01
    • 2017-02-02
    • 2012-12-10
    • 2011-07-13
    • 2011-01-02
    • 1970-01-01
    • 2014-06-01
    • 2020-12-10
    相关资源
    最近更新 更多