Java сервер не может обрабатывать несколько подключений, отправляя строки в сокет - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь создать простой IR C сервер, который принимает несколько клиентов. Проблема в том, что он не отображает сообщения, отправленные от нескольких пользователей, а только сообщения, которые подключились первым. Как я могу сделать так, чтобы он искал входящие соединения и печатал сообщение на сервере (пока), когда кто-нибудь отправляет сообщение? Требуется ли для этого параллелизм?

Клиент

    private void enterChat() throws IOException {
        String input;
        System.out.print("Enter Username: ");
        username = scanner.nextLine();
        while (true) {
            socket = new Socket(arguments[0], Integer.parseInt(arguments[1]));
            input = scanner.nextLine();
            dataOutputStream.writeUTF(username + ": " + input);
            dataOutputStream.flush();
            socket.close();
        }
    }

Сервер

    public static void main(String[] args) throws IOException {
        try (ServerSocket server = new ServerSocket(PORT)) {
            log.info("Server Starting");
            socket = server.accept();
            while (true) {
/*                if (currentUsers < USER_THRESHOLD) {
                    socket = server.accept();
                    System.out.println("User Connected");
                    currentUsers++;
                }*/
                try {
                    inputStream = socket.getInputStream();
                    dataInputStream = new DataInputStream(inputStream);
                    System.out.println(dataInputStream.readUTF());
                } catch(EOFException E) {

                }
            }
        }
    }

У меня был клиент, работающий на трех разных процессах, j1 подключается первым и вот мой результат.

Jul 09, 2020 4:41:59 PM server.Server main
INFO: Server Starting
j1: hello
j1: hello
j1: hello1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...