为什么服务器端套接字在读取“\n.\n”后没有收到消息

Why server side socket is not receiving messages after reading "\n.\n"

我已经编写了简单的 java client/server 程序并且客户端正在尝试发送如下:

os = new DataOutputStream(socket.getOutputStream());
os.writeBytes("HELO\n");    
os.writeBytes("MAIL From: person@example.com\n");
os.writeBytes("RCPT To: to@example.com\n");
os.writeBytes("DATA\n");
os.writeBytes("From: person@example.com\n");
os.writeBytes("Subject: testing\n");
os.writeBytes("Hi there\n"); // message body
os.writeBytes("\n.\n");
os.writeBytes("QUIT");

但是我的服务器端套接字最多可以读取“\n”。然后它正在等待阅读。

为什么它不读取“\n.\n”后的 "QUIT" 消息

服务器代码:

  clientSocket = echoServer.accept();
  is = new DataInputStream(clientSocket.getInputStream());
  os = new PrintStream(clientSocket.getOutputStream());
  // As long as we receive data, echo that data back to the client.
  while (true) {
    line = is.readLine();
    os.println(line);
  }

您需要在 QUIT 后放置一个“\n”,流正在读取 QUIT,但它不会导致 is.readLine() 因为字符串中没有 "new line" 字符