【发布时间】:2014-09-26 20:29:15
【问题描述】:
所以问题是我有 15 个客户端需要能够相互通信。我的问题是这应该怎么做?显然,一种方法是让客户端也成为服务器,但这意味着完全连接 15 个客户端需要 120 个唯一连接。我宁愿不这样做,因为它看起来很乱。
目前的解决方案: 每个新连接都让服务器启动一个单独的线程来监听它。每个客户端都有一个单独的线程来监控传入信息的通道。
服务器充当消息路由器:进程 1 需要向进程 2 发送消息,并向服务器发送消息,指明预期的接收者、发送者和消息。
服务器收到消息后将消息传递给进程 2。侦听线程检测到它并将其传递给进程。
客户端之间的每条消息都以此类推。
这看起来很笨重。有没有更好的方法/包可以用于此?
【问题讨论】:
-
您可以查看 Java 7 引入的 java.nio 包。它提供了非阻塞套接字通道以更好地处理您的场景类型。 docs.oracle.com/javase/7/docs/api/java/nio/channels/…
-
看看UDP / DatagramSocket。没有确认您的数据已到达,例如使用 TCP /
Socket时,但它允许所有服务器将接收的内容发送给他们想要的任何人。 -
您可能想探索点对点方法!
-
想想你的要求。客户来来去去?当客户回来时,您是否需要发送延迟消息?等等……