我正在制作一个具有基本聊天功能的 Java 小程序(您可以发送/接收消息)。我已经创建了一个单独的线程来处理客户端版本上的连接,并且服务器还为每个连接的客户端创建了一个线程。
在客户端的 run() 方法中,我有一个 while 循环来读取收到的任何消息:
while (state == ConnectionState.CONNECTED) {
out.println("Hello Server");
out.flush();
String input = in.readLine();
System.out.println(input);
if(input == null){
connectionClosedFromOtherSide();
}
else {
received(input);
System.out.println(String.format("Recieved something: %s", input));
}
}
这是我的 PrintWriter 和我的 BufferedReader。出于调试目的,我将“hello server”放在这里。此代码工作正常,但问题是 sendtext() 方法:
synchronized private void sendText(String tosend) {
if(out != null && state == ConnectionState.CONNECTED){
out.print(tosend);
out.flush();
System.out.println(String.format("sending %s to server", tosend));
}
}
出于某种原因,如果我调用此方法,它不会在服务器端收到。(但是控制台确实显示它已发送)
谁能帮我解决这个问题?