繁体   English   中英

如何检查 boost asio async_read_some、async_write_some 的返回类型

[英]How to check return type of boost asio async_read_some, async_write_some

我想检查 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 调用是否面临任何问题的东西。

异步操作通常不会失败:它们是启动函数 没有要检查的结果代码。

然而,所有的 Asio IO 对象和自由启动函数都有通用的完成令牌接口。 返回类型实际上取决于该标记:您将看到返回类型是一些基于async_result<> “复杂”计算。

这意味着您可以使用其他异步方式并且结果类型可以更改。 例如:

size_t s.async_read_some(buf, boost::asio::use_future).get();

如果适用,将为 error_code 抛出 system_error。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM