为什么PrintWriter无法正常工作?

时间:2018-05-05 13:13:31

标签: sockets client-server port host printwriter

我正在以客户端服务器关系实现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;
    }

}

0 个答案:

没有答案