获取我的IP地址

问题描述:

我在一个小型网络上有一台计算机,所以我的IP为192.168.2.100。获取我的IP地址

我想让我的真实ip。我下载了no-ip客户端,但对于这样一个简单的事情来说,这看起来很麻烦。

我创建了这个PHP脚本得到了http://www.ip-adress.com/页面,并检索了它给我的IP。

有没有更简单的方法?无论是使用C,WSH或其他。或者如果在PHP中有更简单的方法,请告诉我。

当我得到ip时,我会将它上传到我的ftp站点,以便我可以看到工作中的ip。

+0

像你已经做的那样刮一些外部服务可能已经足够了。它甚至可能是唯一的方法。您的路由器和/或调制解调器将会知道您的真实IP。我不知道你将如何以编程方式与之交互。 – Albert 2009-05-27 18:41:28

+6

http://www.whatismyip.org/提供了一个更简单的抓取页面。 – Albert 2009-05-27 18:42:13

不,没有一个更简单的方法。你的电脑真的不知道它背后的公共IP--它和公共互联网之间可能有任何数量的NAT。它只知道它收到192.168.2.100的消息,并通过网关192.168.2.1发送出去的消息。它不知道数据包到达网关后会发生什么。

如果您想要获得远程站点在处理流量时看起来最终的IP,那么唯一的方法就是实际访问远程站点。在许多情况下,您的计算机可能不知道代理或NAT服务器正在更改IP。

你这样做的方式可能和任何一样。

你说你有一个公共的FTP站点 - 你也有一个网站吗?您的其他选择是让您的本地机器访问该公众网站上的一个php页面。该PHP页面可以验证它是你,然后使用$ _SERVER ['REMOTE_ADDR']来记录你的外部IP。

不是你所要求的,但仍然适用于你想要的。我在家用计算机上安装了GMail通知程序,然后转到帐户活动页面,查看哪个IP地址正在访问我的Google帐户。安全,简单,有效。

某些路由器可以通过UPnP或更具体地说IGD protocol告诉你他们的外部IP地址。如果你碰巧拥有一个支持UPnP的路由器,你可以试试这个。 IStaticPortMapping::get_ExternalIPAddress听起来很有希望。

支持SNMP的设备也可以告诉你他们的IP地址。要求的OID是IP-MIB::ipAdEntAddr

不幸的是,你的服务器将最有可能完全无视它自己的外部地址似乎是(因为它可能被进一步上游设置过一些路由器/网关)

你可以看看这个链接

http://ip-address.domaintools.com/myip.xml

它可能比你现在正在做的事情更容易一些解析。

我想不出如何从另一台机器的角度解决你的IP地址。这里有一些想法:

  • 自动加载 ip-adress。COM页面并解析它
  • DynDNS

我总是用curl http://whatismyip.org让我的公网IP,而NAT后面。

您的计算机没有关于任何NAT或路由的信息,它发生在互联网和互联网之间,除了下一跳(通常是您的路由器的内部IP)。它根本不知道内部地址在哪一跳跳转到哪个公共地址。

因此,没有任何简单的函数或方法可以用任何语言调用。

唯一的两种方法是问别人。如何?:

  • 通过获取并解析路由器管理站点上的正确页面,询问您的NAT路由器(因为它本身会转换为公共IP)。可以说是最可靠和公平的。
  • 通过获取和解析公共服务(如http://dynamic.zoneedit.com/checkip.html),询问外部主机如何看待您。 VB脚本中的示例是here

请注意重新发明*,有一个standard protocol, STUN(与已有的实现),只是为了。另见Discovering public IP programatically

您也可以访问这个页面,让您的IP

http://www.biranchi.com/ip.php

当我需要检查自己的公网IP地址,我喜欢这个网站:

http://www.whatismyip.global/

网站不断您的IP的历史。对我来说非常有用!