Не получается отправить через сокеты больше 1 сообщения java

У меня есть 2 класса клиент-сервер, сервер может 1 раз прочитать сообщение от клиента и 1 раз отправить(клиент так-же может только 1 раз прочитать и 1 раз отправить). При попытке отправить/получить больше 1 сообщения что клиент что сервер просто висят в режиме ожидания. Перепробовал несколько способов, но решить проблему не получилось. `public class Client { private static final int PORT = 8000;

public static void main(String[] args) throws Exception {
    Socket clientSocket = new Socket(InetAddress.getLocalHost(), PORT);
    var reader = startInputService(clientSocket);
    var writer = startOutputService(clientSocket);
    String in = reader.readLine();
    System.out.println(in);
    Scanner scanner = new Scanner(System.in);
    String out = scanner.nextLine();
    writer.write(out);

    System.out.println(reader.readLine());

    writer.close();
    reader.close();
    clientSocket.close();
}

private static BufferedWriter startOutputService(Socket clientSocket) throws Exception {
    return new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
}

private static BufferedReader startInputService(Socket clientSocket) throws Exception {
    return new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

}

public class Server { private static final int PORT = 8000;

public static void main(String[] args) throws Exception {
    startConnection();
}

private static void startConnection() throws Exception {
    var serverSocket = new ServerSocket(PORT);
    while (true) {
        Socket clientSocket = serverSocket.accept();
        var reader = startInputService(clientSocket);
        var writer = startOutputService(clientSocket);

        String out = "Guess the number\n";
        writer.write(out);
        writer.flush();

        String in = reader.readLine();
        System.out.println(in);

        //с этого момента код не работает
        writer.write("test");

        writer.close();
        reader.close();
    }
}
private static BufferedWriter startOutputService(Socket clientSocket) throws Exception {
    return new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
}

private static BufferedReader startInputService(Socket clientSocket) throws Exception {
    return new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
}

}`


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