Netty 无法接收整个数据包

Netty Unable to receive whole packet

我似乎想不通,为什么我的第一个数据包被拆分,而我收到的其余数据包是一个。

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

但为什么我总是分两部分收到第一个数据包?而其他人则作为一个发送(没关系)。它总是接收最多 1024 个字节,然后接收其余的 251 个字节。整个包最多1275字节..

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

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

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