Я пытаюсь создать простой 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