而不是以通常的方式使用选择器,对于每个就绪通道,可以确定并发送消息,我想选择当前准备好的连接并在那里发送消息.
据推测,这可以通过将所有通道投入选择器进行读取并将它们标记为准备好进行读取(如果它们出来),然后执行相同的写入,然后从我已标记为准备好的那些中进行选择来完成.
这是一个好主意,有没有更好的方法来做到这一点,我应该注意什么?例如,Rox教程指出"如果你试图混合OP READ和OP WRITE,你很快就会遇到麻烦.如果你这样做,Sun Windows实现就会陷入僵局." 这里有类似的陷阱吗?实施的最佳方式是什么:
boolean isReadyForRead(SocketChannel c); boolean isReadyForWrite(SocketChannel c);
Malaxeur.. 6
当选择器唤醒时,您应该使用SelectionKey来验证套接字是否已准备好进行读取或写入.
这是一篇关于编写NIO服务器和客户端的非常有用的教程http://rox-xmlrpc.sourceforge.net/niotut/
当选择器唤醒时,您应该使用SelectionKey来验证套接字是否已准备好进行读取或写入.
这是一篇关于编写NIO服务器和客户端的非常有用的教程http://rox-xmlrpc.sourceforge.net/niotut/