IT干货网

java之Netty无法接收整个数据包

davidwang456 2024年06月20日 编程设计 71 0

我似乎不明白,为什么我的第一个数据包会被分割,而我收到的其余数据包会被分割为一个。

第一个收到的东西是 IMEI(17 字节),netty 服务器发回 01 响应并开始发送数据包,我用另一个响应来响应它们。

但是为什么我总是分成两部分收到第一个数据包?而其他的则作为一个整体发送(这是可以的)。它始终最多接收 1024 个字节,然后接收其余的 251 个字节。整个包最大1275字节..

请您参考如下方法:

一般来说,使用 TCP 时不能保证数据包是否被拆分。所以你不能对此做出任何假设。

这就是说,您所看到的可能是使用 AdaptiveRecvByteBufAllocator (默认设置)的结果,因为它从较小的分配大小开始,然后根据需要增加这些分配大小。

如果您想更改行为,可以使用不同的RecvByteBufAllocator。但这又不是你可以依赖的。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!