在 Java 中接收非阻塞消息的 TCP 套接字

时间:2021-08-12 04:16:50

标签: 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){
                //
            }

        }
}

我相信问题是非阻塞套接字没有正确实现所致。

在不阻塞循环的情况下,如何从用户那里接收消息最好?

感谢您抽出时间回答这个问题!

0 个答案:

没有答案