【发布时间】:2012-07-18 10:32:59
【问题描述】:
我有一个小型服务器应用程序,它接收来自多个客户端的连接。 客户端将连接,发送消息并断开连接,没有返回响应。
我正在使用 ServerSocketChannel 来监听连接。
我使用选择器收到新连接的通知,发生这种情况时,我将 SocketChannel 注册到 SelectionKey.OP_READ 的选择器中
我不确定的部分是我何时收到通知数据可供阅读。
我的 SocketChannels 处于非阻塞模式。
我在 SocketChannel 上调用 channel.read(buffer) 来读入字节缓冲区
从要读取的 javadoc 中,我应该重复调用它,直到我得到一个 -1 表示流结束。但是,我不确定在再次调用 read 之前是否应该等待选择器再次通知我。
那就是:
- 选择器通知我数据可用。
- 我叫读
- 我应该再次调用 read 直到返回 -1 还是让选择器通知我然后再次调用 read
非常感谢
【问题讨论】:
标签: java nio socketchannel