目前我正在研究Java NIO Server(单线程)并遇到了一些问题.服务器接受传入连接,将初始数据包(数据包包含客户端用于进一步通信的一些数据)写入客户端但不从中读取.服务器只在我关闭客户端时尝试读取,当然,它返回-1.
在接受连接时,它在以下位置注册:
selectionKey = socketChannel.register(_selector, SelectionKey.OP_READ)
Run Code Online (Sandbox Code Playgroud)
selectionKey.isReadable()回来false(应该吗?)
在发送初始数据包之前,操作更改为:
_selectionKey.interestOps(_selectionKey.interestOps() | SelectionKey.OP_WRITE)
Run Code Online (Sandbox Code Playgroud)
发送初始数据包后,操作更改为:
selectedKey.interestOps(selectedKey.interestOps() & ~SelectionKey.OP_WRITE)
Run Code Online (Sandbox Code Playgroud)
数据包被发送.
可能是什么问题呢?它可以与客户有关吗?