-3

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

4

2 回答 2

4

以下使用亚马逊网络服务并为我工作。

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);
    }
}
于 2013-08-15T14:39:46.703 回答
1

你想获得你的互联网(有人会公开,我不完全同意这个词)IP地址。基本上你有两个选择,或者调用一个外部服务(它不需要是这样的站点,它可以是一个 STUN,或者任何为此而制作的东西),或者你可以从你的调制解调器/路由器/NAT 中获取它。

如果在设备中启用,您可以使用 UPnP,这是一个好方法。

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

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

因此,如果您可以在自己的 LAN 中实现它会更好,但并不容易。

于 2013-08-15T14:31:50.277 回答