Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中获取IP_Java_Ip Address - Fatal编程技术网

在Java中获取IP

在Java中获取IP,java,ip-address,Java,Ip Address,在Java中获取IP地址的最佳方法是什么?我正在尝试getLocalHost,但它返回我的计算机IP地址。我想要像这样的东西。 我也曾试图通过HTML从类似的服务中获取IP,但我认为这不是一个好主意。如果你想获得互联网,有人会将其称为公共,我并不完全同意IP地址这个术语。基本上,你有两个选择,或者呼叫外部服务。它不需要是这样的站点,它可以是一个STUN,或者任何为此而做的东西,或者你可以从调制解调器/路由器/NAT获得它 如果在设备中启用UPnP,则可以使用UPnP,这是一种很好的方法 另一种选

在Java中获取IP地址的最佳方法是什么?我正在尝试getLocalHost,但它返回我的计算机IP地址。我想要像这样的东西。
我也曾试图通过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。