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长度

 

posted @ 2025-03-19 17:21  乐swap火  阅读(28)  评论(0)    收藏  举报