【发布时间】:2014-12-04 22:14:32
【问题描述】:
我试图通过 BufferedReader 和 Buffered Writer 建立客户端/服务器套接字连接,但读取器没有读取任何内容,它只是挂起,客户端发送和刷新正确。 服务器不会抛出任何异常,就好像客户端没有向服务器发送任何内容一样。
我的头要爆炸了……
我对客户端和服务器都使用相同的:
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?尝试删除它,这应该会有所帮助。
-
根据发帖人下方的answer,这是由拼写错误引起的,无法重现。我投票结束这个问题。