2012-02-04 135 views
2

我是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"); 
} 
+0

我不确定,但你可以试试这个:http://stackoverflow.com/questions/1443166/android-how-to-check-if-the-server-is-available – 2012-02-04 10:16:17

+0

它谈到活着的主机。在这种情况下,即使服务器应用程序不在监听,但如果服务器主机处于活动状态,那么它也会很好。在我的情况下,我想知道我的服务器是否正在接受连接。 – Milan 2012-02-04 10:19:50

+0

它看起来像引发了一些错误。尝试在日志中查找它或用'Throwable'替换'IOException'。 – 2012-02-04 12:24:20

回答

0

我已经做了很少的Andrioid发展,所以不要咬我笑脸

为什么主机可能无法与客户端

  • 主机通信的可能原因有防火墙,可能会关闭连接(不太可能)
  • 主机可能有,意想不到的停机如电源故障(不太可能)
  • 主机可能没有正确的端口forwared(可能)
  • 您的andriod应用程序没有适当的清单,允许使用套接字。
  • 您正在测试的您的环形设备可能禁用了可轻松启用的互联网。
  • 如果主机地址是动态的,它的地址可能已经改变。

对于logcat,我认为logcat只显示主线程的日志消息。但我不确定。

相关问题