Java Netty无法接收整个数据包

Java Netty无法接收整个数据包,java,tcp,server,byte,netty,Java,Tcp,Server,Byte,Netty,我似乎不明白,为什么第一个数据包会被拆分,而其余的数据包会被拆分为一个 第一个接收到的东西是IMEI(17字节),netty服务器发回01 respond并开始发送数据包,我用另一个respond对这些数据包进行响应 但为什么我总是分两部分得到第一包呢?当其他人作为一个发送时(这是可以的)。它总是最多接收1024个字节,然后接收其余的251个字节。整个包的最大长度为1275字节 一般来说,在使用TCP时,无法保证数据包是否被拆分。所以你不能对此做出任何假设 也就是说,您看到的可能是使用Adapt

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

第一个接收到的东西是IMEI(17字节),netty服务器发回01 respond并开始发送数据包,我用另一个respond对这些数据包进行响应


但为什么我总是分两部分得到第一包呢?当其他人作为一个发送时(这是可以的)。它总是最多接收1024个字节,然后接收其余的251个字节。整个包的最大长度为1275字节

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

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


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

谢谢你,好先生,将
.childOption(ChannelOption.RCVBUF_分配器,新的AdaptiveRecvbytebubFallocator(1024,16*10241024*1024))
添加到服务器boostrap就成功了。不确定它是做什么的,但它现在可以处理我的数据包了。