日期:2014-05-20  浏览次数:20929 次

java关于readUTF()的阻塞问题的解决,
。。先看一小段代码吧,
private class ReceiveThread implements Runnable {

public void run() {
try {
while (true) {

String s = "fuck another problem";

s = in.readUTF();

System.out.println("从服务器接收数据:" + s);
new GuiController().react(s);
}
} catch (IOException e) {
e.printStackTrace();
}

}
}

我的目的是一个while死循环轮询,这是我客户端的代码,然后想让它一直轮询读取服务器返回的数据,可惜这个while只能执行一次就停了,貌似是readUTF()阻塞了,我晕了,调不出来额,各位大神看看,帮我出出主意,唉,马上就要交作业了,桑心~,

------解决方案--------------------
你当然不能这么做了,看来你这个是长连接的。

一般来说,你发送数据时,在数据前面加上一个这次发送数据的数据长度。客户端收到后读取指定长度的数据,然后处理,处理完后再继续读,如果没有的话就阻塞着。