获取OP_WRITE修改和写操作的特定SocketChannel

时间:2014-07-09 14:12:13

标签: java nio java-io

出于性能原因,我正在使用Java NIO实现一个简单的聊天服务器,我从几个来源读到,他们建议不要在SocketChannel注册Selector来监听读写事件。同时,但只有在有可写数据时才注册写事件。

现在我不知道如何为SocketChannel修改和写操作获取特定的OP_WRITE对象。

以下是该场景,20个聊天客户端在给定时间与聊天服务器建立连接。 ChatClient 1发送一条消息,打算发送给ChatClient 15.从ChatClient 1 SocketChannel读取数据后,如何获取ChatClient 15 SocketChannel具体哪个我{打算修改为OP_WRITE,然后写出适合它的数据。

我不知道这种方法是否有效,但我想在调用SocketChannel方法时将ServerSocketChannel.accept()对象添加到带有可用于索引的列表中稍后再查看。因此,当有数据可写入客户端15时,我从列表中查找SocketChannel对象,然后执行OP_WRITE修改,然后写入数据。这有用吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

这只是一个数据结构问题。您知道要写入哪个客户端,因此您只需要一个可以从中获取SocketChannel的数据结构。您可以按照自己喜欢的方式键入它:顺序索引,客户端识别字符串,他的IP地址;适用于您的应用程序。