我是一个服务器和多个客户端通过线程。客户端将其消息发送到服务器。我已经研究出如何使服务器像回声系统一样将消息发送回客户端。如果我有两个客户端,我希望它们将它们的消息发送到服务器,服务器应该将它发送给没有发送消息的客户端,即另一个客户端。除了发送消息的客户之外,我该如何将消息发送回所有客户端?
答案 0 :(得分:0)
当消息进入时,确定传入消息与之关联的userID /其他标识ID。然后重新广播到所有其他套接字,但排除与发送消息的ID相关联的套接字
答案 1 :(得分:0)
在服务器端创建一个包含所有客户端的列表... 每次收到新的msg,然后迭代列表并使用套接字的端口作为id发送msg ...
答案 2 :(得分:0)
我最近也写了一个聊天程序。我做的是,我有一个类ClientHandler
来处理每个客户的连接。
在ClientHandler
内,我有一个HashMap
。我添加了与HashMap
相关联的每个客户端,Key
为client id
。我为int
使用了UUID
而不是client id
。
在这个处理程序类中,我有一个sendMessage(String str)
方法。在此方法中,循环遍历每个for-each
对象的ClientHandler
循环,检查values
内的HashMap
。在这个for-each
循环中,我有一个if
语句,用于检查您是否正在使用ClientHandler
id写入this
对象。如果检查返回false
,您可以继续在PrintWriter
上写下消息,并将消息 发送给写入消息的客户端。
这适用于我。可能不适用于你。