What's the diffrence between DatagramPacket.ge

2019-07-19 17:38发布

In the code segment below,

DatagramPacket rPacket
rPacket  = new DatagramPacket(new byte[2000], 2000);
.. do some socket.receive ..

what would be the difference between DatagramPacket.getData().length and DatagramPacket.getLength() in java

2条回答
趁早两清
2楼-- · 2019-07-19 18:24

The difference is that the first returns the size of the array used to construct the object, which never changes; the second returns the smaller of the length supplied to the constructor and the actual length of the smallest datagram most recently received, which changes on every receive.

查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-07-19 18:24

From javadoc of class DataGrammPacket

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.

furthe you have to know the 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)

The Constructor also calls the setData()

查看更多
登录 后发表回答