使用InetAddress获取自己的IP

时间:2013-03-12 23:15:44

标签: java android network-programming inetaddress

我有一个问题,如果我尝试InetAddress.getLocalHost()甚至InetAddress.getByName(String host)它每次都会抛出异常,即使对于像nba.com这样的已知网站我也有点困惑FYI目标设备是一个Android 4.1.1 GS3和WiFi和移动网络都在。代码

         try{
        InetAddress ownIP=InetAddress.getLocalHost();
        System.out.println("IP of my Android := "+ownIP.getHostAddress());
        }catch (Exception e){
            System.out.println("Exception caught ="+e.getMessage());
            String t =  e.getMessage() + "yes";
        }

以下是System.out

03-12 18:59:52.636:I / System.out(18996):异常捕获= null

提前致谢

2 个答案:

答案 0 :(得分:2)

我使用一种棘手的方法来获取自己的IP。你可以看看它是否对你有帮助

String getIP() {
    try {
        Socket socket = new Socket("google.com", 80);
        return socket.getLocalAddress().getHostAddress();
    } catch (Exception e) {

    }
}

答案 1 :(得分:2)

我相信我已经发现了我的问题基本上我猜你不允许在Android主线程中执行任何网络操作这是以前可选的,现在是Honeycomb(API 11)所需要的,以下是根据谷歌规范发表评论。

“为防止阻止主用户界面线程,Google建议使用android.os包中的AsyncTask类:”

所以我创建了一个新类NetTask,它扩展了AsyncTask并执行所有网络应用程序,所以现在我的代码正在运行。 IDK,如果其他人都知道,但我想我会发布这个以防万一像我这样的新手还在寻找解决方案:) !!!

由于