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