Java:多个套接字在一个线程中发送和接收维护

问题描述:

我是一个新的java套接字开发人员。在我的解决方案中有三个用于发送和接收的套接字。我想在一个线程中接收三个套接字的数据。出于这个原因,我如何获得通知哪个套接字从远程获取数据。Java:多个套接字在一个线程中发送和接收维护

在一个线程内处理多个流(套接字)是可能的。它需要使用插座的通道(从java.nio.channels中)和(单个)Selector.

您创建一个选择和寄存器SocketChannels.

要了解任何新的可能性的I/o操作时,您可以拨打Selectorselect()方法,该方法会在任何一个通道准备好读取,写入或接受时返回。您必须学习准备好的通道(即获取其“密钥”),并调用其适当的数据传输方法。

有一些示例代码可以在网上找到。 PS:使用线程可能更容易。

+0

是与网络套接字相同的数据套接字吗? – committedandroider 2015-02-12 06:36:32

+0

@committedandroider Java使用术语“ServerSocket”作为通信端点的“监听套接字”和“套接字”,也是“流向连接套接字”(我倾向于称之为“数据套接字”)。 – laune 2015-02-12 07:02:15

+0

不,我想表示接收数据的套接字。 – 2015-02-12 07:03:41