Android,使用" Inet4Address.getLocalHost()。getHostAddress();"访问设备IP地址抛出异常

时间:2018-01-26 01:26:31

标签: android networking ip-address inetaddress

所以我有一个正在运行的应用程序,并且在启动时,我希望能够获取IP地址并将其显示为字符串。我一直在使用下面的代码。

String ipAddress = "";
try{
   ipAddress = Inet4Address.getLocalHost().getHostAddress();
}
catch(Exception e){
   ipAddress = "IP address Cant be used";
}

每次运行它都将返回" IP地址不能使用"所以它会抛出一个错误。

1 个答案:

答案 0 :(得分:0)

如果您希望公开面对IP,请查看此answer。简而言之,你无法让公众面对IP,因为网络地址转换不会发生在您的内核中,即您不会将自己的IP分配给自己,而是由于NAT和DHCP而将其提供给您。以下代码向amazons的aws IP API发出请求,以检索您的IP

public static String getIp() throws Exception {
    URL whatismyip = new URL("http://checkip.amazonaws.com");
    BufferedReader in = null;
    try {
        in = new BufferedReader(new InputStreamReader(
                whatismyip.openStream()));
        String ip = in.readLine();
        return ip;
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}