我的小型网络上有一台电脑,所以我的IP是192.168.2.100。
我想要获得真正的IP。我下载了无ip客户端,但这对于这么简单的事情来说似乎很麻烦。
我创建了这个获得http://www.ip-adress.com/页面的php脚本并检索了它给我的ip。
有更简单的方法吗?使用C,WSH或其他东西。或者,如果有一个更简单的PHP方式请告诉我。
当我拿到ip时,我会把它上传到我的ftp网站,以便我可以看到工作中的ip。
答案 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
答案 6 :(得分:1)
有些路由器可以通过UPnP告诉您外部IP地址,或者更具体地说,IGD protocol。如果您碰巧拥有启用UPnP的路由器,可以试试这个。 IStaticPortMapping::get_ExternalIPAddress听起来很有希望。
启用SNMP的设备也可以告诉您他们的IP地址。要求的OID是IP-MIB::ipAdEntAddr。
答案 7 :(得分:1)
答案 8 :(得分:0)
你这样做的方式可能和其他方式一样好。
你说你有一个公共FTP站点 - 那你还有一个网站吗?您的另一个选择是让您的本地计算机访问该面向公众的站点上的php页面。那个php页面可以验证它是你,然后使用$ _SERVER ['REMOTE_ADDR']来记录你的外部IP。
答案 9 :(得分:0)
不幸的是,你的服务器很可能完全忘记它自己的外部地址似乎是(因为它可能通过一些路由器/网关进一步设置在上游)
您可以查看此链接
http://ip-address.domaintools.com/myip.xml
解析可能比你现在做的要容易一些。
答案 10 :(得分:0)
我无法想到如何从另一台机器的角度解析您的IP地址。这里有几个想法:
答案 11 :(得分:0)
您的计算机上没有关于它与互联网之间发生的任何NAT或路由的信息,除了下一跳(通常是路由器的内部IP)。它根本不知道内部地址在哪一跳被转换成哪个公共地址。
因此,您无法用任何语言调用简单的函数或方法。
唯一的两种方法是问别人。如何?