2012-06-19 131 views
0

第一次我從我的聊天服務器上讀取數據的方法,它從此開始了。我發現我有錯誤的端口號,它凍結在 新的BufferedReader(新的InputStreamReader(conn.getInputStream()));我可以爲BufferReader設置超時嗎?

有沒有辦法讓超時,所以我的程序沒有freez網絡錯誤?我假設必須有, 完整的基法

void SendMessage() 
     { 
      try { 


      URL url = new URL("http://50.63.66.138:1044/update"); 
       System.out.println("make connection"); 
       URLConnection conn = url.openConnection(); 
       conn.setDoOutput(true); 
       BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 


      // String line; 
       String f=new String(""); 
       String line=new String(); 
       while ((line= rd.readLine() ) != null) { 
       f=f+line; 
       f+="\n"; 
       } 
       mUsers.setText(f); 

     } catch (Exception e) { 

       System.out.println("exception"); 
       System.out.println(e.getMessage()); 
      } 

     } 
} 

回答

0

首先,我希望你在一個單獨的線程,以便使上即使正在建立連接觸動你的UI線程響應執行該代碼。 其次,有可用於URLConnection類兩個超時方法: http://developer.android.com/reference/java/net/URLConnection.html#setReadTimeout(inthttp://developer.android.com/reference/java/net/URLConnection.html#setConnectTimeout(int

嘗試與這些傢伙玩,也許會有所幫助。 如果不是,你可以隨心所欲地做到這一點: 用一個runnable啓動線程,它試圖建立一個連接和InputReader。然後等待一段時間,並嘗試中斷線程,如果它仍在運行。

相關問題