ByteBuffer.wrap()这里有点疑问
来源:5-2 UDP搜索IP与端口-2
EverL
2019-09-17
解析数据时,
ByteBuffer buffer = ByteBuffer.wrap(buffer, UDPConstants.HEADER.length, dataLen)
应该写成这样吧
ByteBuffer buffer = ByteBuffer.wrap(buffer, UDPConstants.HEADER.length, dataLen - UDPConstants.HEADER.length)
这样会造成buffer的limit多分加了几个位置吧?
而且buffer满的时候会报边界溢出吧?请老师指点一下。
写回答
1回答
-
你说的对哈,这里的确有BUG的哈。虽然实际的场景下没有触发。
在源码来看,这里会有一次检测,之所以没有触发异常,是因为我们的buffer本身分配的较大,所以没有出现这个问题。
但是可以看见下面的limit是设置的两者相加,所以你的改进代码是正确的哈。
032019-09-20
相似问题