asio::buffer使用
asio::buffer是一个模板,可以输入string和char*等多种类型构造一个缓冲区,需要注意的是,asio::buffer并不会管理缓冲区的生命周期,也就是说传入的string和char*等内存空间需要由调用者管理,并且在使用asio::buffer期间必须保证生命期有效(否则有未定义行为)
std::string msg; size_t readLen = asio::read(sock, asio::buffer(msg,100));//这里readLen会返回0,因为msg去构造buffer时,msg.length是0,同理size_t readLen = asio::read(sock, asio::buffer(msg));也会返回0 std::string msg(100,'\0'); size_t readLen = asio::read(sock, asio::buffer(msg,100));//指定了接收长度,注意接收传入的长度需要小于等于msg长度,否则只生效msg长度
纯属记录程序人生,如有差错,欢迎指正,轻喷