![](/img/trans.png)
[英]Getting the remaining free space length on DatagramSocket's receive buffer in Java
[英]How to “clear out” the receive buffer on a Java DatagramSocket?
我有一個Java程序,不斷從外部系統發送UDP數據。
我們需要定期停止接收數據(因為另一台機器正在處理它)。 在那段時間里,我的套接字讀取器線程進入睡眠循環。 當開始接收數據包的時候,我再次進入socket.receive(Packet)
,並且有一個我不應該處理的數據包緩沖區。 (數據來自“停止時間”。)
有沒有辦法清除DatagramSocket的緩沖區?
如果沒有,最好的選擇是什么? 當我進入等待狀態時將緩沖區大小設置為0,並在我再次開始服務數據包時將其恢復? 當我等待並在我回來時打開一個新的時候關閉插座?
而不是在套接字上停機,無論代碼處理什么代碼都會有停機時間。
因此套接字繼續像往常一樣接收,但如果它處於停機狀態,它只會立即丟棄數據包。
這不是最有效的解決方案,但它實際上很容易實現,並且可能很有用,因為它在其他情況下打開節點以便在不同時間接受不同類型的數據包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.