2009-11-13 154 views
2

我想使用boost asio udpSocket實現一個函數,它等待數據準備好被讀取,或者等到超時過期。Boost asio udp waitForReadyRead

使用asyc_read和一個async_wait,我可以做類似的事情,但我必須讀取數據。我想這樣做而不讀取數據

這將允許更容易使用在許多情況下udpSocket類的,但是考慮到該udpSocket界面,我想不出如何實現這樣的功能,而無需手動緩衝數據,並且重寫sync_read函數

最好,DD

回答

2

嘗試使用選項message_peeklink)調用async_receivelink)。這樣你就可以像你想要的那樣設置超時限制讀取,但不會從接收緩衝區中提取任何數據。

有關更多詳細信息,請閱讀MSDN description of MSG_PEEK(這是Windows特定的實施message_peek ...您需要向下滾動到文章的底部)。這應該讓你更好地瞭解它是如何工作的,儘管你應該查閱你係統的文檔以確定。