我有一个服务器程序。我可以在所有 3 个 ip 上连接到它:
127.0.0.1
本地
192.168.1.3
路由器
109.127.85.64
互联网
我只能使UDP工作。
如何在网络上找到我的IP地址?(程序需要它,我可以在2ip上找到)。可以通过任何资源吗?或者一些特殊的功能。需要Linux。
我有一个服务器程序。我可以在所有 3 个 ip 上连接到它:
127.0.0.1
本地
192.168.1.3
路由器
109.127.85.64
互联网
我只能使UDP工作。
如何在网络上找到我的IP地址?(程序需要它,我可以在2ip上找到)。可以通过任何资源吗?或者一些特殊的功能。需要Linux。
没有基本的方法可以做到这一点。首先,我们需要一些外部服务来响应我们的请求,你甚至可以使用相同的 2ip,但最好找到一些更简单、更国际化的服务,例如ipecho.net。其次,您需要使用某种协议(通常是 http)与服务交互,为此您需要第三方库或程序(选项)。
最简单/最笨拙的方法是使用
wget
andpopen(3)
(省略错误处理):这种方法的缺点是对外部程序的依赖,虽然它也是一个优点:它允许用户在命令级别配置请求服务,这样如果第三方服务停止工作,用户可以轻松改变它的方法。
替代方案/进一步改进:
myip.opendns.com
向其服务器之一请求地址时,它会resolver1.opendns.com
返回请求者的地址。那些。如果一切都在低级套接字上实现,那么一个相同类型的 DNS 查询就足够了nslookup myip.opendns.com resolver1.opendns.com
。