Comment obtenir le tableau `byte []` de taille de paquet réel dans Java UDP

C'est la question suivante, de ma précédente:
Java UDP envoyer - recevoir des paquets un par un

Comme je l'ai indiqué il y a, fondamentalement, je veux recevoir un paquet, un par un, comme c'est via UDP.

Voici un exemple de code:

ds = new DatagramSocket(localPort);
byte[] buffer1 = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer1, buffer1.length);

ds.receive(packet); 
Log.d("UDP-receiver",  packet.getLength() 
                             + " bytes of the actual packet received");

Ici, la taille du paquet est de le dire, 300bytes, mais le buffer1 est réparti comme 1024 octets, et pour moi, c'est quelque chose de mal avec traiter avec buffer1.

Comment faire pour obtenir l'effectif de la taille des paquets byte[] tableau à partir d'ici?

et, plus fondamentalement, pourquoi avons-nous besoin de préallouer la taille de la mémoire tampon pour recevoir des paquets UDP en Java comme cela? ( node.js ne pas le faire )

Est-il un moyen de ne pas pré-allouer la taille de la mémoire tampon et recevez directement le paquet UDP que c'est?

Merci pour votre pensée.

source d'informationauteur Ken OKABE | 2014-02-19