Java 使用InetAddress获取自己的IP地址
我有一个问题,如果我尝试使用InetAddress.getLocalHost,甚至是InetAddress.getByNameString主机,它每次都会抛出一个异常,即使是像nba.com这样的已知网站,我也有点困惑,仅供参考,目标设备是安卓4.1.1 GS3,并且wifi和移动网络都处于打开状态。代码如下Java 使用InetAddress获取自己的IP地址,java,android,network-programming,inetaddress,Java,Android,Network Programming,Inetaddress,我有一个问题,如果我尝试使用InetAddress.getLocalHost,甚至是InetAddress.getByNameString主机,它每次都会抛出一个异常,即使是像nba.com这样的已知网站,我也有点困惑,仅供参考,目标设备是安卓4.1.1 GS3,并且wifi和移动网络都处于打开状态。代码如下 try{ InetAddress ownIP=InetAddress.getLocalHost(); System.out.println
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";
}
下面是系统输出
03-12 18:59:52.636:I/System.out18996:Exception Capture=null
提前感谢我使用了一种棘手的方法来获取自己的IP。你可以看看它是否对你有帮助
String getIP() {
try {
Socket socket = new Socket("google.com", 80);
return socket.getLocalAddress().getHostAddress();
} catch (Exception e) {
}
}
我使用了一种巧妙的方法来获得自己的IP。你可以看看它是否对你有帮助
String getIP() {
try {
Socket socket = new Socket("google.com", 80);
return socket.getLocalAddress().getHostAddress();
} catch (Exception e) {
}
}
我相信我已经发现了我的问题基本上是什么我猜你不允许在android的主线程中执行任何网络操作这以前是可选的,现在是蜂巢API 11所必需的,下面是根据谷歌规范的评论 为了防止阻塞主用户界面线程,Google建议使用android.os包中的AsyncTask类: 所以我所做的就是创建一个新的类NetTask,它扩展了AsyncTask并执行所有网络应用程序,所以现在我的代码可以正常工作了。IDK,如果其他人都知道,但我想我会发布这个,以防像我这样的新手仍然在寻找解决方案:
谢谢我相信我已经发现我的问题基本上是什么我猜你不允许在android的主线程中执行任何网络操作这以前是可选的,现在是蜂巢API 11所必需的,下面是根据谷歌规范的评论 为了防止阻塞主用户界面线程,Google建议使用android.os包中的AsyncTask类: 所以我所做的就是创建一个新的类NetTask,它扩展了AsyncTask并执行所有网络应用程序,所以现在我的代码可以正常工作了。IDK,如果其他人都知道,但我想我会发布这个,以防像我这样的新手仍然在寻找解决方案: 谢谢如果InetAddress.getLocalHost确实引发异常,请看这篇文章。如果InetAddress.getLocalHost确实引发异常,请看这篇文章。如果InetAddress.getLocalHost确实引发异常,请看你的主机文件和/或DNS配置严重错误。