我使用boost :: asio :: ip :: udp :: socket通過套接字的async_receive_from方法接收UDP數據包。Boost.ASIO UDP套接字:接收所有數據包
代碼工作正常,唯一的問題是,在我處理一個數據包的時候,更多的是創建一個隊列(緩衝區)來處理。我的程序雖然必須彙集自處理開始以來接收到的所有數據包,因此它只能偵聽最近的數據包。
實施例:
- 分組1被髮送
- 分組1正在處理
- 包香菸2,3,4被髮送
- 包1結束計算
- 刷新緩衝區
- 包5發送
- 包5正在處理
- 等
有什麼辦法丟棄中間的包? 謝謝!
在處理數據包之前,您必須存儲和定購數據包。例如,您可以將它們添加到列表中,然後從後面處理該列表。 – user743414
感謝user743414。我目前通過緩衝區來完成。我不想要的是處理「舊」數據包,我只想處理儘可能多的數據包,丟棄中間的數據包。 – Jack
定義「舊」數據包?你正在使用時間戳還是簡單的向上計數ID?當你只想處理最後一個數據包時,你只需要存儲最後收到的數據包。 – user743414