在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