J'ai un ByteBuffer
qui peut contenir un maximum de (4 + size
) bytes
(c'est-à-dire un entier suivi de size
caractères). Cependant, le nombre de caractères écrits dans ByteBuffer
peut être inférieur à size
.
Je me demandais donc, est-il possible de déterminer combien de caractères ont été écrits dans le ByteBuffer
et pas seulement la taille totale de celui-ci? limit
, position
et tels ne semblent pas être ce que je recherche.
Merci de votre aide!
Après avoir écrit dans le ByteBuffer, le nombre d'octets que vous avez écrits peut être trouvé avec la méthode position()
.
Si vous puis flip()
le tampon, le nombre d'octets dans le tampon peut être trouvé avec les méthodes limit()
ou remaining()
.
Si vous lisez ensuite une partie du tampon, le nombre d'octets restants peut être trouvé avec la méthode remaining()
.
DatagramChannel channel = DatagramChannel.open();
ByteBuffer bb = ByteBuffer.allocate(5+size);
channel.receive(bb);
bb.flip();
// actual length of received packet
int len = bb.remaining();