byte [] r = new byte[4096];
DatagramPacket dpr = new DatagramPacket(r, r.length);
sock.receive(r);
在receive
后,dpr.getData()
& r
总是一样的吗?
例如:我可以直接使用字节数组r
还是需要调用getData()
来再次检索缓冲区?
测试它,显示它是相同的,但这是否总能保证?
答案 0 :(得分:8)
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()));