Java中的Bytebuffer
我通过UDP发送长号码Java中的Bytebuffer,java,udp,bytebuffer,Java,Udp,Bytebuffer,我通过UDP发送长号码 LinkedQueue Q = new LinkedQueue<ByteBuffer>(); while (this._run) { udp_socket.receive(packet); if (packet.getLength() > 0) { ByteBuffer bb = ByteBuffer.wrap(buf, 0, packet.getLength());
LinkedQueue Q = new LinkedQueue<ByteBuffer>();
while (this._run) {
udp_socket.receive(packet);
if (packet.getLength() > 0) {
ByteBuffer bb = ByteBuffer.wrap(buf, 0, packet.getLength());
Q.add(bb);
}
}
为什么我得到同样的价值?有什么建议吗?您的字节缓冲区是否只包含一个
长
可能不会,我猜你放的太多了,只放了一个long
。
这就是为什么它在第一个sizeof(long)
字节上给出相同的值
您需要做的是一直调用.getLong(),直到到达缓冲区的末尾
您的问题是什么?bytebuffer有多大?问题是:我从队列中删除数据,但所有bytebuffer都有相同的值。您是否重用相同的
buf
对象?您似乎也没有从数据包中获取任何数据吗?我调试过:从Q中删除的所有b都有相同的backingarray id
while(!Q.isEmpty){
ByteBuffer b = Q.remove();
b.getLong();//same value
}