2013-04-02 37 views
0

我通过UDP发送长号码。Java中的Bytebuffer

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

// udp close。我从Queue中删除数据,但所有ByteBuffers都具有相同的值。

while(!Q.isEmpty){ 
     ByteBuffer b = Q.remove(); 
     b.getLong();//same value 
    } 

为什么我收到相同的价值?任何建议?

+1

您的问题是? – sharakan

+0

字节缓冲区有多大? – nullpotent

+0

问题是:我从队列中删除数据,但所有ByteBuffers都具有相同的值。 –

回答

1

您的字节缓冲区是否只包含一个long

可能不是,我的猜测是你放了太多,只有一个long在那里。 这就是为什么它给你在第一个sizeof(long)字节相同的值。

你需要做的是继续调用.getLong(),直到你到达缓冲区的末尾。

See the docs.