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()阻塞了,我晕了,调不出来额,各位大神看看,帮我出出主意,唉,马上就要交作业了,桑心~,
------解决方案--------------------
你当然不能这么做了,看来你这个是长连接的。
一般来说,你发送数据时,在数据前面加上一个这次发送数据的数据长度。客户端收到后读取指定长度的数据,然后处理,处理完后再继续读,如果没有的话就阻塞着。