在Java中获取IP
在Java中获取IP地址的最佳方法是什么?我正在尝试getLocalHost,但它返回我的计算机IP地址。我想要像这样的东西。在Java中获取IP,java,ip-address,Java,Ip Address,在Java中获取IP地址的最佳方法是什么?我正在尝试getLocalHost,但它返回我的计算机IP地址。我想要像这样的东西。 我也曾试图通过HTML从类似的服务中获取IP,但我认为这不是一个好主意。如果你想获得互联网,有人会将其称为公共,我并不完全同意IP地址这个术语。基本上,你有两个选择,或者呼叫外部服务。它不需要是这样的站点,它可以是一个STUN,或者任何为此而做的东西,或者你可以从调制解调器/路由器/NAT获得它 如果在设备中启用UPnP,则可以使用UPnP,这是一种很好的方法 另一种选
我也曾试图通过HTML从类似的服务中获取IP,但我认为这不是一个好主意。如果你想获得互联网,有人会将其称为公共,我并不完全同意IP地址这个术语。基本上,你有两个选择,或者呼叫外部服务。它不需要是这样的站点,它可以是一个STUN,或者任何为此而做的东西,或者你可以从调制解调器/路由器/NAT获得它 如果在设备中启用UPnP,则可以使用UPnP,这是一种很好的方法 另一种选择是不尝试解析或从外部服务获取结果, 你可以从你的设备网页上获取信息,有些设备甚至不需要管理员权限来获取这些信息,所以你只需要解析网页上的信息 大多数答案只是说你需要使用外部服务,就像你说的那样,这不是一个好主意。在我看来,这不是最好的,因为你可能依赖于外部服务提供商。如果它改变了什么,你也需要改变,就像他们让服务中断一样
因此,如果你能在自己的局域网中实现,效果会更好,只是不容易。以下内容使用Amazon web服务,适合我
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);
}
}
看看这个:@Joey这篇文章是关于一个通过客户端计算机中的PPP连接的客户端的,所以它在机器上有可用的公共IP。最后一个答案是它所说的,调用外部服务来获取IP。