我正在以客户端服务器关系实现Client Runnable。由于某种原因,客户端不希望使用PrintWriter向服务器发送消息。当我打印到stdout时,该消息打印正常,但是一旦我将它放在PrintWriter中,服务器就永远不会收到它。有人可以解释为什么会这样吗?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class BlockchainClientRunnable implements Runnable {
private String reply;
private int port;
private String host;
private String message;
public BlockchainClientRunnable(int serverNumber, String serverName, int portNumber, String message) {
this.host=serverName;
this.port=portNumber;
this.message=message;
this.reply = "Server" + serverNumber + ": " + serverName + " " + portNumber + "\n"; // header string
}
public void run() {
try {
Socket sock = new Socket(host,port);
InputStream input = sock.getInputStream();
OutputStream output = sock.getOutputStream();
BufferedReader inputReader = new BufferedReader(new InputStreamReader(input));
PrintWriter outWriter = new PrintWriter(output,true);
outWriter.print(message);
outWriter.flush();
String response = "";
String buffer = inputReader.readLine();
while(buffer != null) {
response = response + buffer;
buffer = inputReader.readLine();
}
inputReader.close();
outWriter.close();
output.close();
input.close();
sock.close();
}catch(IOException e){
e.printStackTrace();
}
}
public String getReply() {
return reply;
}
}