boost库asio详解7——boost::asio::buffer用法
来源:互联网 发布:淘宝亏本卖 编辑:程序博客网 时间:2024/05/22 07:51
1. asio::buffer常用的构造方法
asio::buffer有多种的构造方法,而且buffer大小是自动管理的1.1 字符数组
- char d1[128];
- size_t bytes_transferred = socket.receive(boost::asio::buffer(d1));
1.2 字符向量
- std::vector<char> d2(128);
- size_t bytes_transferred = socket.receive(boost::asio::buffer(d2));
1.3 boost的数组
- boost::array<char, 128> d3;
- size_t bytes_transferred = sock.receive(boost::asio::buffer(d3));
1.4 字符串
- string str = "hello world";
- bytes_transferred = socket.send(boost::asio::buffer(str));
2. asio::buffer的常用方法
2.1 转换方法
- boost::asio::mutable_buffer b1 =boost::asio::buffer(str);
- unsigned char* p1 = boost::asio::buffer_cast<unsigned char*>(b1);
2.2 获取大小
- std::size_t s1 = boost::asio::buffer_size(b1);
3. asio::buffer的读写问题
注意的是boost::asio::const_buffer是只读的buffer, 而boost::asio::mutable_buffer则可写。读写buffer也是有讲究的
3.1 与transfer_all()结合
- boost::array<char, 128> buf;
- boost::system::error_code ec;
- std::size_t n = boost::asio::read(
- socket,
- boost::asio::buffer(buf),
- boost::asio::transfer_all(),
- ec);
- if (ec)
- {
- // An error occurred.
- }
- else
- {
- // n == 128
- }
3.2 与transfer_at_least()结合
- std::size_t n = boost::asio::read(
- socket,
- boost::asio::buffer(buf),
- boost::asio::transfer_at_least(64),
- ec);
当然还有最常用的bytes_transferred,这个例子就很多了。
- 【Boost】boost库asio详解7——boost::asio::buffer用法
- 【Boost】boost库asio详解7——boost::asio::buffer用法
- 【Boost】boost库asio详解7——boost::asio::buffer用法
- boost库asio详解7——boost::asio::buffer用法
- boost库asio详解7——boost::asio::buffer用法
- 【Boost】boost库asio详解——boost::asio::buffer用法
- boost::asio::buffer用法
- 【Boost】boost库asio详解6——boost::asio::error的用法浅析
- 【Boost】boost库asio详解6——boost::asio::error的用法浅析
- 【boost学习】之boost::asio(4)——boost::asio::buffer用法
- 【boost】boost::asio(4)——buffer用法
- boost库asio详解6——boost::asio::error的用法浅析
- boost库asio详解6——boost::asio::error的用法浅析
- boost.asio系列——buffer
- boost.asio系列——buffer
- boost.asio系列——buffer
- 【Boost】boost库asio详解4——deadline_timer使用说明
- 【Boost】boost库asio详解4——deadline_timer使用说明
- uiscrollview和uipagecontrol组合
- HDU 1150 Machine Schedule (匈牙利算法 最小顶点覆盖= 最大匹配数)
- boost库asio详解5——resolver与endpoint使用说明
- ActiveX控件的检测、安装与卸载
- boost库asio详解6——boost::asio::error的用法浅析
- boost库asio详解7——boost::asio::buffer用法
- .net中开发使用的快捷键
- phoneNumber正则表达式
- boost库asio详解8——几个TCP的简单例子
- AMBA总线学习笔记(转)
- 点击tableview里的cell后改变cell的背景图片
- boost::shared_from_this值得注意的地方
- 2008域策略--通过AD修改桌面壁纸
- hdu3473(划分树)