【Boost】boost库asio详解7——boost::asio::buffer用法
来源:互联网 发布:天谕头发颜色数据 编辑:程序博客网 时间:2024/06/11 02:42
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}boost::asio::transfer_all()能够使buffer中的所有数据都传送完毕。即读满buffer为止。
3.2 与transfer_at_least()结合
std::size_t n = boost::asio::read( socket, boost::asio::buffer(buf), boost::asio::transfer_at_least(64), ec);意义即读满64字节为止。返回。
当然还有最常用的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)——buffer用法
- 【boost学习】之boost::asio(4)——boost::asio::buffer用法
- boost库asio详解6——boost::asio::error的用法浅析
- boost库asio详解6——boost::asio::error的用法浅析
- boost.asio系列——buffer
- boost.asio系列——buffer
- boost.asio系列——buffer
- boost::asio::buffer
- boost::asio::buffer
- 查询日期字段,今天、昨天
- 银行MIS系统前台开发总结(1)
- 终于搞定PHP连接SQLServer2005.
- HDOJ - 1318 Palindromes
- 条形码
- 【Boost】boost库asio详解7——boost::asio::buffer用法
- 银行MIS系统前台开发总结(2)-dataTable控件
- 内核驱动程序与应用程序对比
- 站长故事之80后创业人赵伟:电脑少年的白色梦想
- 银行MIS系统前台开发总结(3)-dataTable控件应用2
- 【桥接模式】【辣椒、不辣 牛肉、猪肉 面 组合】
- 【DB2】DB2错误号汇总
- Siverlight学习 之 Silverlight项目的文件组成
- SQL Server 事务复制故障处理一例