我有一台计算机连接在一个小型网络上,所以我的IP地址是192.168.2.100.
我正在尝试获取我的真实IP地址。我下载了no-ip客户端,但那似乎对于这么简单的事情来说太麻烦了。
我创建了这个PHP脚本来获取http://www.ip-adress.com/页面并检索出它给我的IP地址。
是否有更简单的方法?可以使用C、WSH或其他方式。如果在PHP中有更简单的方法,请告诉我。
当我获取到IP地址后,我将上传到我的FTP站点,以便我可以从工作中查看该IP地址。
我有一台计算机连接在一个小型网络上,所以我的IP地址是192.168.2.100.
我正在尝试获取我的真实IP地址。我下载了no-ip客户端,但那似乎对于这么简单的事情来说太麻烦了。
我创建了这个PHP脚本来获取http://www.ip-adress.com/页面并检索出它给我的IP地址。
是否有更简单的方法?可以使用C、WSH或其他方式。如果在PHP中有更简单的方法,请告诉我。
当我获取到IP地址后,我将上传到我的FTP站点,以便我可以从工作中查看该IP地址。
不,实际上没有更简单的方法。你的电脑并不知道它所在的公共IP地址,因为它和公共互联网之间可能存在多个NAT层级。它只知道接收到的消息是从192.168.2.100发送来的,并且所有发出去的消息都通过192.168.2.1这个网关发送出去。一旦数据包被传递给网关,它就对后续发生的事情一无所知。
不要重复造轮子,有一个标准协议 STUN(已经有现成的实现),专门用于获取自己的外部 IP 地址。详见 如何在 POSIX C 中获取自己的外部 IP 地址? 和 编程方式发现公网 IP 地址。
虽然不完全符合你的要求,但仍然适用于你想要的内容。我在家里的电脑上设置了一个GMail通知器,并前往账户活动页面查看访问我的Google账户的IP地址。安全、简单且有效。
如果你想获取远程站点在处理你的流量时所看到的最终IP,则唯一的方法就是实际访问远程站点。在许多情况下,你的计算机可能不知道IP是由代理或NAT服务器更改的。
当我在NAT后面时,我经常使用curl http://whatismyip.org
来获取我的公共IP。
一些路由器可以通过UPnP或更具体地说IGD协议告诉您它们的外部IP地址。如果您恰好拥有启用了UPnP的路由器,可以尝试这个方法。IStaticPortMapping::get_ExternalIPAddress听起来很有前途。
启用SNMP的设备也可以告诉您它们的IP地址。要询问的OID是IP-MIB::ipAdEntAddr。
你现在的做法可能是最好的。
你说你有一个公共FTP站点 - 你在那里也有一个网站吗?你的另一个选择是让你的本地机器访问该公共站点上的一个php页面。那个php页面可以验证你的身份,然后使用$_SERVER['REMOTE_ADDR']来记录你的外部IP地址。
不幸的是,您的服务器很可能完全不知道它自己的外部地址看起来是什么(因为它可能通过某个路由器/网关在上游设置)
您可以查看此链接
http://ip-address.domaintools.com/myip.xml
它可能比你当前正在做的要容易一些解析。
192.168.2.100
是一个真实的IP地址。它是RFC 1918定义的私有IP地址,但它是一个真实的IP地址。它与公共地址之间唯一的区别在于,ISP会阻止RFC 1918地址穿越公共互联网。您的私有地址可以做任何公共地址可以做的事情,只是不能在公共互联网上使用。 - Ron Maupin