我第一次使用方法从聊天服务器读取数据时,它就是frooz。我发现我的端口号错了,而且它冻结了 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());
}
}
}
答案 0 :(得分:0)
首先,我希望您在单独的线程中执行此代码,以便即使在建立连接时也可以使UI线程对触摸做出响应。 其次,URLConnection类有两种超时方法: http://developer.android.com/reference/java/net/URLConnection.html#setReadTimeout(int) http://developer.android.com/reference/java/net/URLConnection.html#setConnectTimeout(int)
尝试与这些家伙一起玩,也许会有所帮助。 如果没有,您可以随时按自己的方式行事: 使用runnable启动线程,尝试建立连接和InputReader。然后等待一些超时并尝试在线程仍在运行时中断该线程。