2012-02-04 136 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只顯示主線程的日誌消息。但我不確定。

相關問題