0

我第一次创建一种从聊天服务器读取数据的方法时,它冻结了。我发现我的端口号错误,并且在 new BufferedReader(new InputStreamReader(conn.getInputStream()));

有没有办法让我的程序不会因网络错误而冻结?我假设必须有完整的方法

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());
           }

        }
}
4

1 回答 1

0

首先,我希望您在单独的线程中执行此代码,以使您的 UI 线程即使在建立连接时也能对触摸做出响应。二、URLConnection 类有两种超时方法: http://developer.android.com/reference/java/net/URLConnection.html#setReadTimeout(int ) http://developer.android.com/reference/java/网络/URLConnection.html#setConnectTimeout(int )

试着和这些人一起玩,也许会有所帮助。如果没有,你总是可以做你自己的方式:用一个尝试建立连接和 InputReader 的 runnable 启动线程。然后等待一段时间,如果线程仍在运行,请尝试中断线程。

于 2012-06-20T00:46:39.903 回答