Java DatagramPacket-getData是否总是返回传递的相同缓冲区?
在Java DatagramPacket-getData是否总是返回传递的相同缓冲区?,java,sockets,udp,datagram,Java,Sockets,Udp,Datagram,在接收后,dpr.getData()和r是否始终相同 例如:我可以直接使用字节数组r,还是需要调用getData()再次检索缓冲区 测试它,表明它是一样的,但这总是保证吗 byte [] r = new byte[4096]; DatagramPacket dpr = new DatagramPacket(r, r.length); sock.receive(dpr); 应该是sock.receive(dpr) 接收后,dpr.getData()&r是否始终相同 对r作为“保存传入数据报的缓冲
接收
后,dpr.getData()
和r
是否始终相同
例如:我可以直接使用字节数组r
,还是需要调用getData()
再次检索缓冲区
测试它,表明它是一样的,但这总是保证吗
byte [] r = new byte[4096];
DatagramPacket dpr = new DatagramPacket(r, r.length);
sock.receive(dpr);
应该是sock.receive(dpr)代码>
接收后,dpr.getData()&r是否始终相同
对r
作为“保存传入数据报的缓冲区”提供给构造函数,getData()
“返回用于接收或发送数据的缓冲区”
i、 e.我可以直接使用字节数组r还是需要调用getData()再次检索缓冲区
可以使用字节数组,但为什么?像其他人一样使用getData()
,不要忘记也使用getOffset()
和getLength()
,而不要假设数据报填充了字节数组:例如,System.out.println(新字符串(datagram.getData(),datagram.getOffset(),datagram.getLength())代码>为什么getOffset不是0?在您的例子中,它将是0,但是还有其他构造函数,其中字节数组与偏移一起传递。在这种情况下,将使用构造函数中给定的偏移量。如果将来有人更改对构造函数的调用,您应该调用getOffset来保护代码不受意外情况的影响。
byte [] r = new byte[4096];
DatagramPacket dpr = new DatagramPacket(r, r.length);
sock.receive(r);