我编写了简单的java客户端/服务器程序,客户端尝试发送如下:
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()
因为在 QUIT 中没有“新行”字符字符串
关于java - 为什么服务器端套接字在读取 "\n.\n"后没有收到消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36632499/