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

标签 java sockets java-io

我编写了简单的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/

相关文章:

java - 更改 ROOT [Tomcat] 名称时拒绝 403 访问

java - Jackson 模块签名阻止为自引用泛型类型添加序列化程序

html - 我可以在 Windows Phone 8 应用程序中使用 Node.js 吗?

java - 存储在字符串中

java - 读取一个目标中包含长数字的小文件并使用回车符\n

java - 如何访问docker内Java应用程序编写的文本文件

java - apachetiles 3 的动态属性

sockets - Laravel Ratchet 套接字身份验证

linux - linux 套接字内核缓冲区是否交换到磁盘?

java - 扫描器类 NoSuchElementFoundException