以下のコードセグメントでは、
DatagramPacket rPacket
rPacket = new DatagramPacket(new byte[2000], 2000);
.. do some socket.receive ..
JavaでのDatagramPacket.getData()。lengthとDatagramPacket.getLength()の違いは何でしょうか。
違いは、最初のメソッドがオブジェクトの構築に使用される配列のサイズを返すことです。これは決して変更されません。2 番目の引数は、コンストラクターに提供された長さと、最後に受信した最小のデータグラムの実際の長さの小さい方を返します。これは、受信ごとに変化します。
クラス DataGrammPacket の javadoc から
getLength():Returns the length of the data to be sent or the length of the data
received.
getData():Returns the data buffer. The data received or the data to be sent
starts from the <code>offset</code> in the buffer,
and runs for <code>length</code> long.
さらに、setData() を知っておく必要があります。
Set the data buffer for this packet. This sets the
* data, length and offset of the packet.
*
* @param buf the buffer to set for this packet
*
* @param offset the offset into the data
*
* @param length the length of the data
* and/or the length of the buffer used to receive data
setData(byte[] buf, int offset, int length)
コンストラクターは setData() も呼び出します