我试图通过BufferedReader和Buffered Writer进行客户端/服务器套接字连接,但读者不读取任何东西,只是挂起,客户端发送和正确刷新。 服务器不会抛出任何异常,如果客户端不向服务器发送任何东西。Java套接字BufferedReader读取不读
我的头会去爆炸......
进出口使用相同的客户端和服务器:
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
这里是服务器的代码:
//inside of try catch
while(true){
while(!in.ready())// just to debug
System.out.println("READY: " + in.ready()); //just to debug
System.out.println("READY: OK"); //just to debug
msg = receive().toString(); //hangs here...
System.out.println("KEYIS: " + msg);
///some stuff to do ....
public StringBuilder receive() throws IOException {
StringBuilder str = new StringBuilder();
int tmp;
while(true){
tmp = in.read();
if(tmp == 0)
break;
else if(tmp == -1)
throw new IOException();
str.append((char)tmp);
}
return str;
}
客户端代码:不挂在这里
//inside of try catch
send(KEY); //sended properly, no exception
while(true){
send(KEY); // sended properly, no exception
System.out.println("sent");
//System.out.println(receive().toString());
}
public void send(String str) throws IOException{
out.write(str + "\n"); //
//out.newLine(); //tried too, not helped
out.flush(); //push message to server
}
为什么你使用BufferedReader?尝试删除它,这应该有所帮助。 – vbezhenar 2014-12-04 22:20:27