step1. 创建io_server实例(在Boost1.66后的版本为io_context)

boost::asio::io_service io_service;

step2. 设置endpoint的地址ip和端口

unsigned short port = 8080;

. 客户端client

 auto const address = boost::asio::ip::address_v4::from_string("192.168.0.123");
boost::asio::ip::tcp::endpoint endpoint(address,port);

. server设置要接受连接的端口和协议类型

boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(),port);//ipv4,侦听端口8080

step3.创建socket实例

boost::asio::ip::tcp::socket socket(io_service);

.客户端client,建立到endpoint的socket连接

socket.connect(endpoint);//同步
socket.async_connect(endpoint,[](){});//异步,需要回调函数,这里使用的是lambda表达式

. 服务器端server

//创建acceptor实例,并开始侦听Socket连接
acceptor.accept(socket)//同步,运行到此处时会阻塞线程知道侦听到client的连接请求
socket.async_accept(socket,[](){});//异步,需要回调函数,这里使用的是lambda表达式

step4.对Socket进行读写操作,客户端相同

boost::asio::write(socket,boost::asio::buffer("hello world!"));    //向socket中写入字符std::cout<<socket.available()<<std::endl;          //获取可读取的字节数
std::vector<char> str(socket.available()+1,0);    //定义一个vector缓冲区    socket.receive(boost::asio::buffer(str));          //使用buffer()包装缓冲区并接收数据
std::cout<<"client received: "<<&str[0]<<std::endl;//输出接收到的字符串

Boost Asio总结(16)例子相关推荐

  1. c++语言 tcp例子,C++ boost::asio编程-同步TCP详解及实例代码

    boost::asio编程-同步TCP boost.asio库是一个跨平台的网络及底层IO的C++编程库,它使用现代C++手法实现了统一的异步调用模型. boost.asio库支持TCP.UDP.IC ...

  2. boost::asio::deadline_timer(理解)

    并发与并行: 并发和并行从宏观上来讲都是同时处理多路请求的概念.但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔内发生. 1.Timer.1 - 使 ...

  3. Boost.Asio基本原理

    Boost.Asio基本原理 这一章涵盖了使用Boost.Asio时必须知道的一些事情.我们也将深入研究比同步编程更复杂.更有乐趣的异步编程. 网络API 这一部分包含了当使用Boost.Asio编写 ...

  4. 基于Boost.Asio的异步通信服务器设计与开发

     boost::asio 通讯服务器实践 1. 开发环境搭建 1.1. Asio准备 万事开头难.对于一个C++的陌生者,编译一个开源的代码并不是一件轻松愉快的事情.为使大家在审阅和检测本代码可使 ...

  5. boost.asio包装类st_asio_wrapper开发教程(2014.5.23更新)(一)-----转

    一:什么是st_asio_wrapper 它是一个c/s网络编程框架,基于对boost.asio的包装(最低在boost-1.49.0上调试过),目的是快速的构建一个c/s系统: 二:st_asio_ ...

  6. 网上收集下boost::asio发送与传输相关的几个函数,老是忘记

    刚连接上:调用async_accept 1 boost::shared_ptr<tcp::socket> spMySocket(new tcp::socket(m_ioservice)); ...

  7. Boost.Asio入门

    原文地址:https://mmoaay.gitbooks.io/boost-asio-cpp-network-programming-chinese/content/Chapter1.html Boo ...

  8. Boost.Asio使用实例

    1.概述: Boost.Asio是一个跨平台的C++库,用于网络和底层I/O编程,可以在I/O对象(如socket)上执行同步和异步操作. 2.简略的过程分析.以socket的连接操作为例: 你的程序 ...

  9. boost::asio ssl

    以 boost::asio::ssl::stream<boost::asio::ip::tcp::socket>  代替 boost::asio::ip::tcp::socket 客户端c ...

最新文章

  1. Windows 下的 7 种 DLL 劫持技术
  2. 9张表格学会,子网划分
  3. flask 开发接口测试平台
  4. hive 百分比_HIVE短期内再次突破前高
  5. [蓝桥杯]算法提高 天天向上(记忆化搜索)
  6. 《小学生C++趣味编程》第42课 最小公倍数
  7. 怎么在Ubuntu下设置程序的快捷键
  8. A. Holidays
  9. 系统封装 如何加载PE到Easyboot进行合盘
  10. 2013年深圳百公里徒步感悟
  11. 【paper-note7】Several Papers About Video Classification
  12. 一天狂点3.7万个赞! 男子因“点赞过多”被大众点评网处罚 法庭上吵翻
  13. 使用paddlepaddle进行手写数字识别
  14. linux generic netlink实现机制:注册、创建
  15. 计算机中班音乐,幼儿园中班音乐活动课件大全【三篇】
  16. 一个简单的猜数字游戏(附带关机惩罚)
  17. 【面试】Js面试题(一)
  18. 载波层叠调制在多电平变换器及两电平变换器中的应用
  19. 计算机应用基础贴吧,计算机应用基础,有会做的吗?
  20. 64位系统VBS调用32位COM组件

热门文章

  1. 46.一个例子了解C++中异常处理
  2. Java 洛谷 求质数(素数)、合数、因数、最大公约数、最小公倍数
  3. 【Linux - mysql】怎么修改数据库编码
  4. 计算器显示代码java_java编写的计算器源代码
  5. php怎么定义索引,PHP未定义的索引/变量
  6. oracle执行减法,oracle时间的加法和减法
  7. ML之FE:利用【数据分析+数据处理】算法对国内某平台上海2020年6月份房价数据集【12+1】进行特征工程处理(史上最完整,建议收藏)
  8. CUMCM:05B  DVD在线租赁
  9. MAT之PSO:利用PSO+ω参数实现对一元函数y = sin(10*pi*x) ./ x进行求解优化,找到最优个体适应度
  10. TCP socket编程记录(C语言)