在DatagramPacket
类中,所有构造函数都需要一个int参数作为“length”。 当我试图接收它时,为什么需要设置DatagramPacket
的长度,因为我不一定知道数据包有多长时间? 我应该将其设置为哪个数字?receive DatagramPacket
编辑: 让我改变我的问题是:
如果DatagramSocket.receive
方法有签名
public DatagramPacket receive() {};
,而不是
public void receive(Datagrampacket p) {};
岂不更有意义?因为如上所述,接收者通常不知道分组是什么样的。
由于送货服务比喻往往是适用于UDP,让我们说:
的DatagramSocket就像一个邮箱。 DatagramPacket就像包裹信封。 DatagramPacket.data是信封内的内容。对于送货服务,接收者提供邮箱但不包含信封。
您的修改具有误导性。这个例子代替了“为什么我们需要在Datagrampacket中复制datagram.buffer.length和datagram.length?”为什么我们需要首先提供缓冲区。这是两个不同的问题。而且,现在还不清楚你现在要问什么。 – Val 2013-03-02 12:06:26