客户端 channel 在 netty 中不处于可写状态。有没有高手指导一下,看看是什么原因
为什么 channel 一直处于不可写状态?
因为它不处于可写状态,所以我们的线程处于 sleep 模式。我们使用 Thread dump 分析了线程的状态,在下面的循环中添加了一个计数器,它等待一分钟然后退出循环。但我真的很想弄清楚不可写状态的原因。
channel 关闭后 channel 是否还留在ctx中(如果EOF不是客户端发送的)?
这是否会发生(意味着永远不会处于可写状态)?
while (!ctx.getChannel().isWritable()) {
Thread.sleep(100);
}
请帮忙。
非常感谢
最佳答案
从表面上看,这是因为 ChannelBuffer 已满,即没有更多可写字节。
可能是写入速度太快,或者 channel 无法发送任何字节造成的。如果您没有写得太快,可能是因为 channel 从未成功发送写入的字节。
关于tcp - 客户端 channel 不处于可写状态(NIO)Netty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15263180/