用Java获取IP

在Java中获取IP地址的最佳方法是什么? 我正在尝试getLocalHost() ,但它返回我的计算机IP addrees。 我想要这样的东西。 此外,我试图通过HTML从这样的服务获取IP,但我认为这不是一个好主意。

以下使用amazon web services并为我工作。

 import java.net.*; import java.io.*; public class IPTest{ public static void main(String args[]) throws Exception{ URL whatismyip = new URL("http://checkip.amazonaws.com/"); BufferedReader in = new BufferedReader(new InputStreamReader( whatismyip.openStream())); String ip = in.readLine(); //you get the IP as a String System.out.println("My IP address:"+ip); } } 

你想得到你的互联网(有人会打电话给公众,我不完全同意这个词)ip地址。 基本上你有两个选择,或者调用一个外部服务(它不需要像这样的网站,它可以是一个STUN,或任何为此做的),或者你可以从你的调制解调器/路由器/ NAT获得它。

如果在设备中启用了UPnP,这是一个很好的方法。

其他选项不是尝试解析或从外部服务获取结果,而是从设备网页获取结果,有些设备甚至不需要管理员权限来获取该信息,因此您只需要解析页面以获取信息。

大多数答案只是说你使用外部服务,就像你说它不是一个好主意。 在我的意见中,它不是最好的,因为你依赖于外部服务提供商。 如果它改变了你需要改变的任何东西,就像他们让服务破坏一样。

所以,如果你可以在你自己的局域网中实现它更好,只是不容易。