Haa*_*hii 4 c++ sockets boost boost-asio
我使用 boost asio 开发客户端/服务器应用程序,专门boost::asio::ip::tcp::socket用于连接和传输数据。现在我正在使用接收boost::asio::async_read一定数量的字节。到目前为止,在所有情况下,在调用我的处理程序之前,我都知道我想要接收多少字节。因此,我看不出使用 sockets meber 函数的理由read_some。但我想知道为什么没有“async_read”成员函数boost::asio::ip::tcp::socket而只有免费的。
所以我的问题是:为什么有一个read_some成员函数但没有read成员函数,或者“Boost只是忘记实现它”是否存在概念或技术原因?
Asio 中的所有流接口都提供read_some和async_read_some方法。这适用于 TCP 套接字、SSL 流和串行端口。的实施read,read_until以及他们的堂兄弟异步都具有相同的实现,基于使用read_some方法。该read函数被编写为一个通用模板,它可以read_some在它的第一个参数上使用该方法来根据您的要求执行调用。
有一些 C++ 倡导者建议尽可能使用非友元非成员函数,以便在类实现更改时最小化更改。 read_some是接口,read只是一个包装器,在对各种不同来源进行部分读取的情况下添加阻塞。