В классе DatagramPacket
все конструкторы требуют параметра int как «длина». Зачем мне устанавливать длину DatagramPacket
, когда я пытаюсь его получить, ведь я не всегда знаю, какой длины пакет? И какой номер мне установить?
edit: Позвольте мне изменить свой вопрос на это:
если метод DatagramSocket.receive
имеет сигнатуру
public DatagramPacket receive() {};
вместо
public void receive(Datagrampacket p) {};
не будет ли это иметь больше смысла? поскольку, как уже говорилось, получатель обычно не знает, как выглядит пакет.
Поскольку к UDP часто применяется аналогия со службой доставки, скажем:
DatagramSocket похож на почтовый ящик. DatagramPacket похож на конверт для посылки. DatagramPacket.data — это содержимое внутри конверта. Для службы доставки получатель предоставляет почтовый ящик, а не конверт.