我正在使用TCP / IP在Java中开发多客户端/服务器应用程序。我的服务器为每个clientSockets创建一个新线程(clientSocket = serverSocket.accept();)。问题似乎在于找出所有正在运行的线程彼此了解的方式(即,用于向聊天中的所有在线用户广播消息)。什么是我的每个线程知道新用户何时连接到服务器以及用户断开与服务器断开连接的有效方式?
答案 0 :(得分:0)
我的位置会创建一个额外的队列线程,该线程具有对套接字线程和消息队列的引用。 所有套接字线程都可以将消息排入队列线程,然后将消息发送到所有套接字线程(因此套接字线程需要对队列线程/队列的引用 - 同步!)。
你不得不期待ArryList吗?套接字线程可以改变你必须使用迭代器进行迭代。
在评论中回答您的问题:效果
每个连接启动一个线程非常耗费资源(想象一下10.000个连接)。所以还有其他方法来处理它。
我绝对会选择mina:
Apache MINA是一个网络应用程序框架,可帮助用户轻松开发高性能和高扩展性的网络应用程序。它通过Java NIO在各种传输(如TCP / IP和UDP / IP)上提供抽象的事件驱动异步API。
网上有很多关于MINA的教程。
也许它有点矫枉过正,但如果你有兴趣,这是值得的。
[编辑]
如果只有10-15个客户端,那么每个连接使用一个线程应该没问题......