netty - 直接调用 close() 和使用 ChannelFutureListener.CLOSE 的区别

标签 netty

我正在使用 netty 3.6.6。

有人可以解释以下两个代码之间的区别吗?

  • channel.close();
  • channel.write(ChannelBuffers.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE);

  • 使用No 1时,发现netty发送TCP FIN 之前 发送我写的所有数据包。
    因此,客户端无法接收服务器发送的所有数据包。
    但是我找不到 2 号的问题。

    我不明白为什么No 1 会出问题。有什么区别?

    提前致谢。

    最佳答案

    我是 netty 的新手,这是我的选择:
    1.无论是否有未发送的数据包,都会直接关闭 channel 。
    2.将在channelfuture中添加一个监听器来检测是否所有的数据包都发送了然后关闭 channel

    关于netty - 直接调用 close() 和使用 ChannelFutureListener.CLOSE 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17725853/

    相关文章:

    log4j - 如何使用自定义的log4j.xml在netty中配置记录器?

    java - Applet + Netty 4.0 异常初始化错误

    java - storm 0.9.0.1 与 Netty 的 supervisor 通信

    java - Netty SSL/TLS/HTTPS 支持

    java - 管道中的条件执行处理程序

    ssl - 使用 TLS 压缩的 Netty(不是 HTTP)?

    java - netty 非阻塞反向代理

    java - Netty channel 写入和刷新不写入消息

    netty - Spark 是如何使用 Netty 的?

    java - 如何正确使用ChunkedStream