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

标签 java multithreading sockets

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

最佳答案

可以在单个线程中处理多个流(套接字的流)。它需要使用套接字 channel (来自 java.nio.channels)和(单个)选择器。

您创建一个选择器并注册SocketChannel。

要了解 I/O 操作的任何新可能性,您可以调用 Selectorselect() 方法,只要其中一个 channel 准备就绪,该方法就会返回用于阅读、写作或接受。您必须了解就绪 channel (即获取其“ key ”),并调用其适当的数据传输方法。

网上可以找到一些示例代码。

PS:使用线程可能更容易。

关于Java:多个套接字发送和接收在单个线程中维护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469865/

相关文章:

Java 8 Firebase 任务.await()

Java - 在单独的线程中为每个客户端提供服务的服务器?

ios - 更改无法识别我附加到后台线程的 NSFetchedResultsController

python - 在 Python 中处理线程连接的正确方法

c套接字客户端,http重定向到https,反之亦然

c - 如何在C中的Excel工作表中创建另一行

java - 测试第 3 方 Java SDK 的静态方法

java - Java 实例级别的同步

java - ListNode解决方案需要说明

android - C++ 服务器使用 TCP 向 Android 客户端发送消息