默认netty udp接收DatagramPacket字节数最大是2048,如果数据大,超过这个限制,就会报错,抛出异常
java.lang.IndexOutOfBoundsException: readerIndex(0) + length(3072) exceeds writerIndex(2048): UnpooledUnsafeDirectByteBuf(ridx: 0, widx: 2048, cap: 2048)
如下图
报错代码出自AbstractByteBuf.java的checkReadableBytes0()这个方法,读取的数据索引readerIndex超过writerIndex就曝出上面的错误
在udp服务创建的时候只要增加这个默认大小既可以解决上面的问题。在udp服务创建的时候指定RCVBUF_ALLOCATOR大小即可,如下图指定初始大小为10KB。