我正在尝试使用 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){
//
}
}
}
我相信问题是非阻塞套接字没有正确实现所致。
在不阻塞循环的情况下,如何从用户那里接收消息最好?
感谢您抽出时间回答这个问题!