我创建了一个聊天程序,但我无法弄清楚一个小方面。现在的工作方式是这样的:从服务器向所有客户端发送邮件
Server启动
客户端1连接
客户端2连接
客户端1将消息:你好。
服务器获取消息并将其发送给所有连接的客户端。
我遇到的主要问题是服务器发送客户端1的消息给客户端,以及因此现在2“你好”的,而不是仅仅1
这里是我的Server.java
for (Iterator<DataOutputStream> e = clients.iterator(); e.hasNext();) {
DataOutputStream dout = (DataOutputStream)e.next();
dout.writeUTF(message);
}
检查部分是至关重要的,因为在不同情况下可能有1000个事件100个1000个用户。因此应该避免检查每个客户端O(n)。广播消息在O(1)中,并且检查过滤器不应该产生任何开销。可能这个讨论不是直接适用于这个问题。但是也应该考虑让客户端智能化的设计选择,以便忽略它自己的信息。 – arunk2
是的,他可以为每个客户端分配一个代码,以便客户端通过该消息发送;当回复的消息带有自己的ID时,他可以忽略它。你是对的想法是在设计;我的回答是基于他的代码,他在开始时发布的。 –