Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的Bytebuffer_Java_Udp_Bytebuffer - Fatal编程技术网

Java中的Bytebuffer

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());

我通过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());     
               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
    }