我想檢查 async_read_some、async_write_some 或任何其他異步函式是否成功。我知道處理程式中可用的 boost::asio::placeholders::error 引數。但是異步呼叫是否沒有回傳型別?我閱讀了 completion_condition,但不知道如何使用它。任何簡單的代碼示例都會有所幫助。
mSock.async_read_some(
boost::asio::buffer(mI8Data, MAX_BUFFER_LENGTH),
boost::bind(&ConnectionHandler::HandleRead,
shared_from_this(),
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
我基本上想要一些告訴我 async_read_some 呼叫是否面臨任何問題的東西。
uj5u.com熱心網友回復:
異步操作通常不會失敗:它們是啟動函式。沒有要檢查的結果代碼。
然而,所有的 Asio IO 物件和自由啟動函式都有通用的完成標記介面。回傳型別實際上取決于該標記:您將看到回傳型別是一些基于async_result<>.
這意味著您可以使用其他異步方式并且結果型別可以更改。例如:
size_t s.async_read_some(buf, boost::asio::use_future).get();
如果適用,將為 error_code 拋出 system_error。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329031.html
