netty javadoc 解释说 setReadable 暂停/恢复 I/O 线程的读取操作。我的问题是同时数据发生了什么。假设我在服务器的一个通道上运行 setReadable(false),而另一端的客户端正在向套接字写入数据,数据去哪里了?它会填充一些缓冲区吗?有没有办法可以控制这个缓冲区或在它溢出时得到任何通知?
异步挂起或恢复 I/O 线程的读取操作。此方法是以下代码的快捷方式:
int interestOps = getInterestOps(); 如果(可读){ setInterestOps(interestOps | OP_READ);} else { setInterestOps(interestOps & ~OP_READ); }
值得一提的是,如果您在已经有一些数据要调度的通道上调用 setReadable(false),您将获得数据。因此,如果您在其中一个处理程序中的 channelOpen 内调用 setReadable(false),如果客户端在连接时写入,您仍然会在该隧道上收到 messageReceived。 正如在这个问题上所解释的