Почему PrintWriter не работает? - PullRequest
0 голосов
/ 05 мая 2018

Я внедряю Client Runnable в отношениях клиент-сервер. По какой-то причине Клиент не хочет отправлять серверу сообщение с PrintWriter. Сообщение печатается нормально, когда я печатаю на стандартный вывод, но как только я помещаю его в 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;
    }

}

...