我已经声明了一个socket,就像这样:
serverAddr = InetAddress.getByName(this.ip);
socket = new Socket(serverAddr, port);
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
然而,以下代码无法正常工作。
in.ready()
总是返回 false,如果删除此行代码,则程序将在 String message = in.readLine();
处卡死。private void receive() {
try {
InputStreamReader isr = new InputStreamReader(socket.getInputStream());
System.out.println(isr.getEncoding());
BufferedReader in = new BufferedReader(isr);
if (in.ready()) {
String message = in.readLine();
if (message != null) {
if (listener != null) {
listener.receiveMessage(ip, message);
} else {
print("Client recieved: " + message);//
}
}
}
in.close();
} catch (Exception e) {
print("Error with input stream: " + e);
disconnect();
}
}
我该如何解决这个问题?
编辑:
这是我服务器类中发送消息的代码: out.println(message); out.flush(); 只要我往消息里面添加了一些内容,就会在循环中执行这段代码。循环结束后,out会被关闭。
flush()
或close()
?如果没有,消息将被缓冲,只有当缓冲区满时才会发送。在此之前,你的客户端将不会收到任何东西。 - king_nak