2012-06-19 133 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。然后等待一段时间,并尝试中断线程,如果它仍在运行。

相关问题