クラスではDatagramPacket
、すべてのコンストラクターが「長さ」として int パラメーターを必要とします。DatagramPacket
パケットの長さが必ずしもわからないのに、受信しようとするときにa の長さを設定する必要があるのはなぜですか? また、どの数値に設定すればよいですか?
編集:質問を次のように変更させてください:
DatagramSocket.receive
メソッドに署名がある場合
public DatagramPacket receive() {};
それ以外の
public void receive(Datagrampacket p) {};
それはもっと理にかなっていますか?前述のように、受信者は通常、パケットがどのように見えるかを知りません。
配送サービスの類推は UDP によく適用されるため、次のように言いましょう。
DatagramSocket はメールボックスのようなものです。DatagramPacket は小包の封筒のようなものです。DatagramPacket.data はエンベロープ内のコンテンツです。配送サービスの場合、受取人はメールボックスを提供しますが、封筒は提供しません。