我是一名新的 java 套接字开发人员。在我的解决方案中,有三个用于发送和接收的套接字。我想在一个线程中接收三个套接字的数据。因此,我如何获取哪个套接字从远程获取数据的通知。
最佳答案
可以在单个线程中处理多个流(套接字的流)。它需要使用套接字 channel (来自 java.nio.channels)和(单个)选择器。
您创建一个选择器并注册SocketChannel。
要了解 I/O 操作的任何新可能性,您可以调用 Selector
的 select()
方法,只要其中一个 channel 准备就绪,该方法就会返回用于阅读、写作或接受。您必须了解就绪 channel (即获取其“ key ”),并调用其适当的数据传输方法。
网上可以找到一些示例代码。
PS:使用线程可能更容易。
关于Java:多个套接字发送和接收在单个线程中维护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469865/