1
我想設置/增加數據報套接字的接收緩衝區大小。我想這樣做,因爲我在PC和位於同一本地網絡上的Android設備之間發送數據時遇到了一些隨機數據包丟失,我想測試如果增加緩衝區大小對減少此UDP是否有任何影響數據包丟失。我正在嘗試使用下面的代碼來設置緩衝區大小。Android DatagramSocket接收緩衝區大小
DatagramSocket socket = new DatagramSocket();
socket.setReceiveBufferSize(655360);
再後來就(在我開始從插座讀取)我檢查接收緩衝器大小如下:
Log.i(TAG, "Size: " + socket.getReceiveBufferSize());
然而,日誌消息總是顯示的163840. 緩衝區大小這段代碼有什麼問題?我應該以另一種方式設置接收緩衝區大小。
感謝
那麼指定的緩衝區大小隻是一個指示? 我認爲這是自文檔說出的最小值: 「這是對內核的暗示;內核可能使用更大的緩衝區。」 我知道UDP是無連接的,因此會發生丟包,但我認爲我的數據包丟失過多。也許問題出在我的閱讀主題上。 – frans1989
不管Javadoc可能會說什麼,內核也可能使用更小的緩衝區。它不是Java的,取決於內核。我懷疑問題出在網絡上而不是代碼中。 「太多」是主觀的。多少? – EJP
那麼它並不總是恆定的,但平均而言,我會說每20個數據包就會丟失一個數據包。但它並不總是恆定的。我需要修改我的代碼以迎合數據包丟失,因爲正如你所說,它肯定會發生。謝謝 – frans1989