Android检查远程服务器是否在线
问题描述:
我是Android编程的新手,我一直面临本地Java中不存在的问题。当我在我的电脑上运行这段代码时,它运行正常。但是,当我在我的设备上运行它时,我什么都没有,我甚至试图将消息发布到UI,并且没有用于此的logcat。我不知道什么是错的。Android检查远程服务器是否在线
try{
Socket socket = new Socket(serverAddr, SERVER_PORT);
Log.i("TAG","Socket connected");
}catch(IOException e){
Log.i("TAG","Socket not connected");
}
更新1:我只是改变了code..nothing多少,并意识到在2分钟后或因此它做什么它应该做?是否与保持活力的旗帜有关?或者无论如何,我可以运行代码一两秒钟,并停止它。请理解,如果服务器已经死机,那么套接字创建线下面的代码只会在2分钟后执行。这下面是我的代码:
try{
InetAddress serverAddr = InetAddress.getByName(serverIP);
//Line below executes with no delay
postToUI("Trying to connect to standalone server" + "\n\n");
socket = new Socket(serverAddr, SERVER_PORT);
//Line below executes after 2 minutes
postToUI("Successfully connected to standalone server" + "\n\n");
}catch(ConnectException e){
postToUI("Socket not connected");
}catch(IOException e){
postToUI("Socket not connected");
}
答
我已经做了很少的Andrioid发展,所以不要咬我笑脸。
为什么主机可能无法与客户端
- 主机通信的可能原因有防火墙,可能会关闭连接(不太可能)
- 主机可能有,意想不到的停机如电源故障(不太可能)
- 主机可能没有正确的端口forwared(可能)
- 您的andriod应用程序没有适当的清单,允许使用套接字。
- 您正在测试的您的环形设备可能禁用了可轻松启用的互联网。
- 如果主机地址是动态的,它的地址可能已经改变。
对于logcat,我认为logcat只显示主线程的日志消息。但我不确定。
我不确定,但你可以试试这个:http://stackoverflow.com/questions/1443166/android-how-to-check-if-the-server-is-available – 2012-02-04 10:16:17
它谈到活着的主机。在这种情况下,即使服务器应用程序不在监听,但如果服务器主机处于活动状态,那么它也会很好。在我的情况下,我想知道我的服务器是否正在接受连接。 – Milan 2012-02-04 10:19:50
它看起来像引发了一些错误。尝试在日志中查找它或用'Throwable'替换'IOException'。 – 2012-02-04 12:24:20