【发布时间】:2015-08-08 22:20:44
【问题描述】:
我正在编写一个程序,其中我有一个持续监听请求的服务器(就像大多数服务器一样)。我希望它在每次获得客户端连接时创建一个新线程(我已经完成了这部分),并且我希望它在它之后立即将客户端添加到同一个线程。所以我将有两个客户端连接到同一个线程。
类似的东西:
.....
try(ServerSocket serversocket = new ServerSocket();
Socket client1 = serversocket.accept();
Socket client2 = serversocket.accept();){
//spawn new thread with sockets to client1 and client2
这可能吗?有没有其他选择?是否有可能让两个不同的线程相互交谈?
是否可以从延伸到客户端的线程创建一个新的服务器套接字?
...
try(ServerSocket serversocket = new ServerSocket();
Socket client1 = serversocket.accept();){
//spawn thread
}
现在在线程中:
....
try(ServerSocket serversocket2 = new ServerSocket();
Socket client2 = serversocket2.accept();){
//exchange information between two clients and do other stuff
}
有什么想法吗?非常感谢所有帮助。
【问题讨论】:
-
想到的问题是,为什么?
-
我正在尝试制作许多不同的两人棋盘游戏的虚拟版本。如果您还有其他方法可以做到这一点,请随时回答。
-
连接一,建立某种组/标识符,连接二要求加入同一个“组”(如果存在)。两个连接都驻留在各自的线程中...?
-
但是我该如何创建组呢?!我带来了几乎相同的东西,但我不知道如何让两个线程相互通信。
-
这取决于你。您可以使用
Map或其他某种查找机制,其中组管理两个连接之间传递的信息
标签: java multithreading sockets network-programming serversocket