2013-04-02 9 views
0

Я посылаю длинное число через UDP.Bytebuffer в Java

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. Я удаляю данные из очереди, но все 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.

Смежные вопросы