关于netty 服务端 收 C语言客户端 连接 接收数据问题

Bug 描述

在 arm 平台 ,使用 netty 作为 服务端 监听 接收数据,使用的 FixedLengthFrameDecoder(4096) 定长编解码 数据包 程序运行一段时间后,出现服务端接收不到数据问题,

客户端是 c语言开发的 采用短连接 。业务来了,每次是建立连接,发送自定义业务数据请求,响应 ,然后c语言客户端主动关闭连接。

复现时机

Bug 是偶发。目前是研发阶段,我们是服务器整机交付,每天服务器是断正常断电,这个bug 可能几周出现一次 。重启jar 后又可以正常接收请求了 。 系统是 arm 平台。

比如:“Java 8、netty 4.1.91 hutool 工具 5.18.18”

期望结果

期望定位下 为什么没有触发 channelActive 方法,以及需要怎么配置才能间断收数据。

错误信息

自己的思路和解决方案

通过 tcpdump 抓包,tcp 三次握手成功 的 3个数据包,c语言客户端发送第一包数据4096个字节。在抓包的 pcap日志文件中都有,然后就是netty服务端没有响应了。 但是 netty 服务端 handler 实现的 SimpleChannelInboundHandler 里面的channelActive方法里面 日志没有打印,也就是 channel 没有激活, 自定义的实现的解码器 实现 ByteToMessageDecoder 中的 decode 方法开始的地方 日志也没有打印。 exceptionCaught() 方法也没有打印 异常日志 。

相关资料

相关的 server 启动监听配置 ,自定义handler ,自定义 decoder https://codecopy.cn/post/qh8v78

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP