Java:"外部IP地址",无需在线使用Web服务,如http://checkip.amazonaws.com

st.*_*ath 1 java network-programming ip-address

我想找出我的外部IP地址.

一个非常常见的解决方案是设置BufferedReader指向该网站http://checkip.amazonaws.com.

是否有一个解决方案,但没有连接到外部网站这样做 - 或者换句话说,我怎么能以编程方式找到我的外部 IP地址?

Geo*_*rge 8

答案有点复杂,因为它完全取决于您的计算机如何连接到互联网.如果计算机直接分配了可公开路由的IP地址,那么您只需列出分配给每台计算机网络接口的网络地址.对于服务器,这种情况很典型.

但是,计算机也可以通过网络地址转换(NAT)层连接.在这种情况下,您的计算机不会直接分配可公开路由的IP地址; 相反,它被赋予本地IP地址(例如10.xxx或192.168.xx),然后路由器(通常是下一跳)将数据包从本地地址空间映射到公共地址空间.这些设置可能会有很大差异,因此建议只使用众所周知的外部服务(如您提到的checkip.amazonaws.com),因为无论中间地址转换如何,该方法都应该有效.