xiong_hui_hui 2020-04-16 12:12 采纳率: 0%
浏览 908

java.nio.channels.ClosedChannelException什么情况会触发它

我是使用rosjava这个包,客户端发送请求时得到的这个报错,偶发性,源码底层是netty写的3.5版本,具体报错是

nnectionTrackingHandler: Channel exception: java.nio.channels.ClosedChannelException

请假高手。
先排除客户端连接数量过多原因,因为就一个客户端最多两个;
排除客户端频繁发送的原因,程序开启关闭都要耗掉几秒;
有没有方向的。

  • 写回答

1条回答 默认 最新

  • timi先生 全栈领域新星创作者 2023-06-05 16:28
    关注

    ClosedChannelException表示你正在对一个已经关闭或者对你正在进行的操作已经关闭的通道上调用IO操作。抛出此这个并不一定意味着通道已完全关闭。
    所以有两个方向:
    (1) 客户端在编写消息之前关闭了连接。
    (2) 服务器在阅读消息之前关闭了连接。
    建议看一下客户端或者服务端的写方法 channel.write() 或 ctx.write(),这两个方法都将调用 AbstractUnsafe 的 write() 方法,调用这两个方法都会移动ByteBuf 索引。如果出站缓冲区为空,该方法可能会将 ClosedChannelException 设置为 promise。如果服务端关闭了连接,缓冲区可能会被清除。

    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面