在DatagramPacket
类中,所有构造函数都需要一个 int 参数作为“长度”。为什么我DatagramPacket
在尝试接收时需要设置a的长度,因为我不一定知道数据包有多长?我应该将其设置为哪个数字?
编辑:让我把我的问题改成这样:
如果DatagramSocket.receive
方法有签名
public DatagramPacket receive() {};
代替
public void receive(Datagrampacket p) {};
这不是更有意义吗?如上所述,接收者通常不知道数据包的样子。
由于交付服务类比经常应用于 UDP,假设:
DatagramSocket 就像一个邮箱。DatagramPacket 就像包裹信封。DatagramPacket.data 是信封内的内容。对于送货服务,收件人提供邮箱但不提供信封。