0
我已經寫了簡單的Java客戶端/服務器程序和客戶端試圖像下面發送「\ n \ n」:爲什麼看完後服務器端套接字沒有收到消息
os = new DataOutputStream(socket.getOutputStream());
os.writeBytes("HELO\n");
os.writeBytes("MAIL From: [email protected]\n");
os.writeBytes("RCPT To: [email protected]\n");
os.writeBytes("DATA\n");
os.writeBytes("From: [email protected]\n");
os.writeBytes("Subject: testing\n");
os.writeBytes("Hi there\n"); // message body
os.writeBytes("\n.\n");
os.writeBytes("QUIT");
但我的服務器端套接字能夠讀到「\ n」。然後它正在等待閱讀。
爲什麼不讀 「QUIT」 消息後
Server代碼 「\ n \ n」:
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);
}
也許您想嘗試'BufferedReader.readLine()'而不是使用DataInputStream。請參閱文檔:https://docs.oracle.com/javase/7/docs/api/java/io/DataInputStream.html瞭解爲什麼您不應該使用'DataInputStream' – bili
這不適用於真正的郵件服務器。 SMTP中的行結束符被定義爲'\ r \ n',而不是'\ n'。 – EJP