我想知道对于 SelectionKey(实际上是它的 Channel)为特定类型的事件“准备好”意味着什么,是否有明确的答案?
key.isAcceptable):是不是表示客户端已经建立了连接(发送了SYN,而服务器已经发出了SYN+ACK)?我相信情况就是这样,因为简单地绑定一个 ServerSocketChannel 并不能让它“可接受”(在测试中验证了这一点)
key.isReadable():是不是说socket的接收缓冲区没有满(当然也包括空的)?或者这是否意味着其接收缓冲区中有未读字节?(我假设它是第一个,因为即使在 key.isReadable() 时 channel.read() 也可以等于 0) - 但同样肯定是一个“休眠”通道(一个打开但客户端不发送数据的通道)是不是在选择器的 selected-keyset 中重复返回?
我猜答案是“依赖于实现”