При передаче строки от сервера к клиенту появляются неизвестные символы

Выполняю простое действие, отправляю от клиента на сервер объект, произвожу с ним действия, после чего отправляю клиенту назад строку с результатом. Но при считывании строки на стороне клиента появляются неизвестные символы. Для связи клиент-сервер использую Socket, для записи и считывания строки BufferedWriter, BufferedReader.

Клиент (Прописан в AndroidStudio, запускаю на android):

public class Client {
    
    public User user = null;
    public String result = null;
    private Thread thread = null;
    
    public Client (User user) {
        this.user = user;
    }

    public String sendUser(){
        thread = new Thread(null, processOnBackground, "processOnBackground");
        return result;
    }

    private final Runnable processOnBackground = new Runnable() {

        @Override
        public void run() {

            Socket socket = null;
            ObjectOutputStream oos = null;
            BufferedReader reader = null;

            try {

                socket = new Socket(address, port);
                oos = new ObjectOutputStream(socket.getOutputStream());
                reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

                oos.writeObject(user);
                oos.flush();
            
                result = reader.readLine();

            } catch (Exception ex) {
                result = ex.toString();
            }
        }
    };
}

Сервер (Прописан в Eclipce, запускаю в командной строке):

public class Server {

    public static LinkedList<ServerWorker>serverList = new LinkedList<>();

    public static void main(String[] args) throws IOException{

        ServerSocket serverSocket = null;

        try {
            serverSocket = new ServerSocket(port);
        }catch(IOException ex) {
            System.out.println(ex.toString());
            System.exit(-1);
        }

        Socket clientSocket = null;
    
        try {
            while(true) {
                clientSocket = serverSocket.accept();
            try {
                serverList.add(new ServerWorker(clientSocket));
            }catch(IOException ex) {
                clientSocket.close();
            }
        }
        }finally {
            serverSocket.close();
        }
    }
}

ServerWorker:

public class ServerWorker extends Thread{
    private Socket socket = null;

    private ObjectInputStream inObject = null;
    private BufferedWriter outString = null;

    public ServerWorker (Socket socket) throws IOException{
        this.socket = socket;
    
        inObject = new ObjectInputStream(socket.getInputStream());
        outString = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

        start();
    }

    @Override
    public void run() {
        try {
            User user = (User)inObject.readObject();
            
            //Do some...

            if (successfulSuccess){
                sendString("SUCCESS");
            }else{
                sendString(":-(");
            }
        }catch(Exception ex) {
            System.out.println(ex.toString());
        }

    }

    private void sendString(String value){
        try {

            outString.write(value);
            outString.flush();

            outString.close();
        }catch(Exception ex) {
            System.out.println(ex.toString());
        }
    }

}

С сервера улетает:

SUCCESS

А к клиенту прилетает:

��  SUCCESS

Пытался уточнять кодировку:

    reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "Cp1251"));
    outString = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "Cp1251"));

но это лишь изменило вопросики на другие закарлючки.


Ответы (0 шт):