【发布时间】:2016-08-31 18:22:56
【问题描述】:
我是一台服务器和多个通过线程的客户端。客户端将他们的消息发送到服务器。我已经研究出如何让服务器像回声系统一样将消息发送回客户端。如果我有两个客户端,我希望他们将消息发送到服务器,服务器应该将其发送给没有发送消息的客户端,即另一个客户端。除了发送消息的客户端之外,我将如何将消息发送回所有客户端?
【问题讨论】:
标签: java multithreading sockets server client
我是一台服务器和多个通过线程的客户端。客户端将他们的消息发送到服务器。我已经研究出如何让服务器像回声系统一样将消息发送回客户端。如果我有两个客户端,我希望他们将消息发送到服务器,服务器应该将其发送给没有发送消息的客户端,即另一个客户端。除了发送消息的客户端之外,我将如何将消息发送回所有客户端?
【问题讨论】:
标签: java multithreading sockets server client
当消息传入时,确定传入消息与哪个用户 ID/其他标识 ID 相关联。然后重新广播到所有其他套接字,但排除与发送消息的 ID 关联的 Socket
【讨论】:
在服务器端列出所有客户端... 每次接收到一个新的 msg,然后迭代列表并使用 socket 的端口作为 id 发送 msg...
【讨论】:
我最近也写了一个聊天程序。我所做的是,我有一个类 ClientHandler 来处理每个客户端的连接。
在ClientHandler 里面我有一个HashMap。我添加了每个连接到HashMap 的客户端,Key 是client id。我使用UUID 而不是int 作为client id。
在这个处理程序类中,我有一个sendMessage(String str) 方法。在此方法中,for-each 循环遍历每个 ClientHandler 对象,检查 HashMap 内的 values。在这个for-each 循环中,我有一个if 语句,用于检查您是否正在使用this id 写入ClientHandler 对象。如果检查返回false,您继续在PrintWriter 上写入消息,消息不会发送给编写消息的客户端。
这对我有用。可能不适合你。
【讨论】: