Java 在准备从中读取的多个套接字中进行选择
我正在编写一个服务器客户端应用程序。我有一个服务器,它保存了从ServerSocket的accept()方法获得的几个套接字。我想从这些套接字中读取数据,但我不一定知道准备从哪个套接字读取数据。我需要某种选择器来选择一个准备好读取的套接字,以便读取它发送的数据Java 在准备从中读取的多个套接字中进行选择,java,io,nonblocking,Java,Io,Nonblocking,我正在编写一个服务器客户端应用程序。我有一个服务器,它保存了从ServerSocket的accept()方法获得的几个套接字。我想从这些套接字中读取数据,但我不一定知道准备从哪个套接字读取数据。我需要某种选择器来选择一个准备好读取的套接字,以便读取它发送的数据 谢谢。您基本上有两种选择可以让它工作: 每个接受的套接字都有专用线程。这是因为“常规”套接字I/O阻塞。不能使用单个线程选择性地处理多个套接字。由于没有“偷看”功能,因此在调用read时,您总是有被阻止的风险。通过在您感兴趣的每个套接字上
谢谢。您基本上有两种选择可以让它工作:
read
时,您总是有被阻止的风险。通过在您感兴趣的每个套接字上都有一个线程,阻止读取不会阻止任何其他操作(线程)如果你真的决定走NIO之路,我建议你退房并离开。我发现他们比普通的NIO更容易相处。您不仅可以使用更好的API,而且至少MINA还可以解决一些讨厌的NIO bug。您知道吗?然而,由于它的使用非常复杂,包装器库通常是首选。是的,Netty非常棒,正如merryprankster所建议的。谢谢,Netty看起来很棒!正是我想要的。