Получать неблокирующие сообщения в сокетах tcp на java

#java #sockets #serversocket

Вопрос:

Я пытаюсь сделать небольшой чат по локальной сети на Java, у меня есть поток, который просматривает список со всеми клиентами и пытается прочитать следующую строку с 0 заданным временем ожидания.

 while(true){
    for(ChatClient chater : Server.connections){
        try{
                chater.sock.setSoTimeout(0);
                message = SocketUtils.recvMsg(chater.sock);
                System.out.println(chater.getName()   " has sent a message!");

                message = chater.getName()   ": "   message;
                senderId = chater.getId();

                Server.broadcastMsg(message, senderId);
            }
            catch(SocketTimeoutException e1){

                continue;
            }
            catch(IOException e){
                //
            }
                    
        }
}
 

Я почти уверен, что ошибка между ошибками заключается в том, что неблокирующие сокеты реализованы неправильно.

Каков был бы наилучший способ получать сообщения от пользователей, не блокируя цикл?

Спасибо, что нашли время ответить на этот вопрос!

Комментарии:

1. Просто использовать другую нить?

2. @dan1st Этот фрагмент кода выполняется в другом потоке, но по какой-то причине сокеты ничего не получают.