获取我的IP地址

时间:2009-05-27 18:36:48

标签: php c networking ip-address wsh

我的小型网络上有一台电脑,所以我的IP是192.168.2.100。

我想要获得真正的IP。我下载了无ip客户端,但这对于这么简单的事情来说似乎很麻烦。

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

有更简单的方法吗?使用C,WSH或其他东西。或者,如果有一个更简单的PHP方式请告诉我。

当我拿到ip时,我会把它上传到我的ftp网站,以便我可以看到工作中的ip。

12 个答案:

答案 0 :(得分:12)

不,这并不是一个更简单的方法。你的计算机真的不知道它背后的公共IP - 它和公共互联网之间可以有任意数量的NAT层。它只知道它在192.168.2.100接收消息,并通过192.168.2.1的网关发送外发消息。它不知道数据包到达网关后会发生什么。

答案 1 :(得分:6)

请注意重新发明轮子,有一个standard protocol, STUN(已经存在的实现),仅此而已。另请参阅Discovering public IP programatically

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

答案 4 :(得分:2)

我总是使用curl http://whatismyip.org来获取NAT后的公共IP。

答案 5 :(得分:2)

您也可以访问此页面以获取您的IP

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

答案 6 :(得分:1)

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

启用SNMP的设备也可以告诉您他们的IP地址。要求的OID是IP-MIB::ipAdEntAddr

答案 7 :(得分:1)

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

http://www.whatismyip.global/

该网站会记录您的IP历史记录。对我来说非常有用!

答案 8 :(得分:0)

你这样做的方式可能和其他方式一样好。

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

答案 9 :(得分:0)

不幸的是,你的服务器很可能完全忘记它自己的外部地址似乎是(因为它可能通过一些路由器/网关进一步设置在上游)

您可以查看此链接

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

解析可能比你现在做的要容易一些。

答案 10 :(得分:0)

我无法想到如何从另一台机器的角度解析您的IP地址。这里有几个想法:

  • 自动加载 ip-adress.com页面并解析它
  • 查看DynDNS

答案 11 :(得分:0)

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

因此,您无法用任何语言调用简单的函数或方法。

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

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