DatagramPacket - getData 是否总是返回传递的相同缓冲区?
byte [] r = new byte[4096];
DatagramPacket dpr = new DatagramPacket(r, r.length);
sock.receive(dpr);
在之后,将和永远是一样的?receive
dpr.getData()
r
例如:我可以直接使用字节数组还是需要调用来再次检索缓冲区?r
getData()
测试它,表明它是相同的,但这总是得到保证吗?
byte [] r = new byte[4096];
DatagramPacket dpr = new DatagramPacket(r, r.length);
sock.receive(dpr);
在之后,将和永远是一样的?receive
dpr.getData()
r
例如:我可以直接使用字节数组还是需要调用来再次检索缓冲区?r
getData()
测试它,表明它是相同的,但这总是得到保证吗?
byte [] r = new byte[4096];
DatagramPacket dpr = new DatagramPacket(r, r.length);
sock.receive(r);
那应该是sock.receive(dpr);
收到后,dpr.getData() & r 会始终保持不变吗?
是的。 作为“用于保存传入数据报的缓冲区”提供给构造函数,并且“返回用于接收或发送数据的缓冲区”。r
getData()
也就是说,我可以直接使用字节数组r,还是需要调用getData()再次检索缓冲区?
您可以使用字节数组,但为什么呢?像其他人一样使用,不要忘记也使用 和 ,而不是假设数据报填充了字节数组:例如,getData()
getOffset()
getLength()
System.out.println(new String(datagram.getData(), datagram.getOffset(), datagram.getLength()));