为什么服务器端套接字在读取“\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" 字符
我已经编写了简单的 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" 字符