0

我正在制作一个具有基本聊天功能的 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));
   }
}

出于某种原因,如果我调用此方法,它不会在服务器端收到。(但是控制台确实显示它已发送)

谁能帮我解决这个问题?

4

1 回答 1

2

客户端,每个

String input = in.readLine(); // read until newline

在服务器端,应该由

out.println( tosend ); // print the newline expected by the client

out.flush()不要发送换行符。

于 2012-10-24T21:18:20.027 回答