原文:http://blog.csdn.net/byxdaz/article/details/72627678

//服务端

[cpp] view plaincopy
  1. #include <iostream>
  2. #include <boost/thread/thread.hpp>
  3. #include <boost/asio.hpp>
  4. using namespace boost::asio;
  5. //链接客户端处理
  6. void ConnectionClientProcess(ip::tcp::socket * sockClient)
  7. {
  8. std::cout<<sockClient->remote_endpoint().address()<<std::endl;
  9. //向客户端发送hello world!
  10. boost::system::error_code ec;
  11. while(true)
  12. {
  13. sockClient->write_some(buffer("abcdefg"),ec);
  14. //如果出错,打印出错信息
  15. if(ec)
  16. {
  17. std::cout<<boost::system::system_error(ec).what()<<std::endl;
  18. break;
  19. }
  20. Sleep(200);
  21. }
  22. }
  23. int main(int argc, char* argv[])
  24. {
  25. std::list<boost::thread *> listThreadClient;
  26. std::list<ip::tcp::socket *> listSocketClient;
  27. //io_service对象
  28. io_service iosev;
  29. ip::tcp::acceptor acceptor(iosev,ip::tcp::endpoint(ip::tcp::v4(),1000));
  30. for(;;)
  31. {
  32. //socket对象
  33. ip::tcp::socket * socketClient = new ip::tcp::socket(iosev);
  34. //等待直到客户端连接进来
  35. acceptor.accept(*socketClient);
  36. //显示连接进来的客户端
  37. listSocketClient.push_back(socketClient);
  38. boost::thread * thr = new boost::thread(ConnectionClientProcess,socketClient);
  39. listThreadClient.push_back(thr);
  40. //与当前客户交互完成后循环继续等待下一客户连接
  41. }
  42. //等待线程都退出
  43. std::list<boost::thread *>::iterator iter = listThreadClient.begin(),iterEnd = listThreadClient.end();
  44. for(iter; iter!= iterEnd; iter++)
  45. {
  46. (*iter)->join();
  47. }
  48. std::list<ip::tcp::socket *>::iterator iterSock = listSocketClient.begin(),iterEndSock = listSocketClient.end();
  49. for(iterSock; iterSock!= iterEndSock; iterSock++)
  50. {
  51. (*iterSock)->close();
  52. }
  53. return 0;
  54. }

//客户端

[cpp] view plaincopy
  1. #include <iostream>
  2. #include <boost/asio.hpp>
  3. using namespace boost::asio;
  4. int main(int argc, char* argv[])
  5. {
  6. //io_service对象
  7. io_service iosev;
  8. //socket对象
  9. ip::tcp::socket socket(iosev);
  10. //连接端点
  11. ip::tcp::endpoint ep(ip::address_v4::from_string("127.0.0.1"),1000);
  12. //连接服务器
  13. boost::system::error_code ec;
  14. socket.connect(ep,ec);
  15. //如果出错,打印出错信息
  16. if(ec)
  17. {
  18. std::cout<<boost::system::system_error(ec).what()<<std::endl;
  19. return -1;
  20. }
  21. //接收数据
  22. char buf[100] = {0};
  23. size_t len=socket.read_some(buffer(buf),ec);
  24. std::cout.write(buf,len);
  25. return 0;
  26. }

boost库之tcp实例(同步方式)相关推荐

  1. boost库之tcp client 回调不正常

    原文: http://blog.csdn.net/byxdaz/article/details/79244800 这个在boost1.64下是报错的, boost::array<char,TCP ...

  2. boost库之tcp server(异步)

    原文:http://blog.csdn.net/byxdaz/article/details/72676000 //服务端 boost1.64 报错: boost::array<char, 12 ...

  3. Windows下链接boost库及应用实例

    1.在官网下载合适的boost版本.boost安装包 2.进行安装,建议安装在默认目录下.我安装的目录为C:\local 3.visual studio 2019下进行属性配置. (1)进行配置选项, ...

  4. C/C++ 开发 boost 库参考手册整理(2) 【学习笔记】

    文档声明: 以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正.并且该文档在后期会随着学习的深入不断补充完善.感谢各位的参考查看. 笔记资料仅供学习交流使用,转载请标明出处 ...

  5. asio boost 异步错误处理_boost::ASIO的同步方式和异步方式

    http://blog.csdn.net/zhuky/article/details/5364574 http://blog.csdn.net/zhuky/article/details/536468 ...

  6. Boost:以协程的方式实现重构echo服务器的实例

    Boost:以协程的方式实现重构echo服务器的实例 实现功能 C++实现代码 实现功能 boost::asio模块,以协程的方式实现重构echo服务器的实例 C++实现代码 #include < ...

  7. Boost:以协程的方式实现带有默认值的echo服务器的实例

    Boost:以协程的方式实现带有默认值的echo服务器的实例 实现功能 C++实现代码 实现功能 boost::asio模块,以协程的方式实现带有默认值的echo服务器的实例 C++实现代码 #inc ...

  8. Boost:以协程的方式实现echo服务器的实例

    Boost:以协程的方式实现echo服务器的实例 实现功能 C++实现代码 实现功能 boost::asio模块,以协程的方式实现echo服务器的实例 C++实现代码 #include <boo ...

  9. boost库之udp server实例

    //UdpLinkServer.h //udp服务#pragma once#include <boost/asio/ip/tcp.hpp> #include <boost/asio. ...

最新文章

  1. python转弯轨迹_使点沿着曲线轨迹移动
  2. spark集群详细搭建过程及遇到的问题解决(三)
  3. iview地区加载_LoadingBar 加载进度条
  4. 复习一下日志等级类型
  5. ssl初一组周六模拟赛【2018.4.7】
  6. 用cocos2dx实现模态对话框
  7. C语言中的常用文件操作
  8. Qt Quick编程(1)——QML的核心部分ECMAScript
  9. 【自我救赎--牛客网Top101 4天刷题计划】 第四天 登峰造极
  10. NYOJ456andNYOJ325
  11. 史上最全面的JTAG和SWD接口的定义/STM32/STM8工程师的福音/JTAG转SWD接口仿真/告别杂乱的仿真线/终于讲清楚了JTAG/SWD
  12. 【Java工具类】中文转换成汉语拼音工具-pinyin4j
  13. 小米11的root过程记录
  14. PISCES: A Programmable, Protocol-Independent Software Switch(总结)
  15. 【激发兴趣】台球小游戏基础版
  16. 计算机科学 在职双证,计算机专业在职研究生有双证的吗?
  17. 把 GPL 视作“病毒”?请停止污名化 GPL
  18. Mybatis(一)——【快速入门、增删查改操作、核心配置文件描述及API】
  19. JAVA范例 十三)多线程编程(3)
  20. unity3D 摄像机旋转、平移、缩放

热门文章

  1. 数据结构 如何删除单向链表的倒数第m个元素
  2. 计算机cmd shutdown,cmd里面shutdown命令的原因是什么?什么时候显示的?
  3. websocket创建失败_SpringBoot2.2 实践WebSocket被不靠谱的百度搜索结果坑了多少人
  4. 对比es1.x和es2.0纹理加载方法
  5. leetcode 233 number of digit one
  6. mysql脚本下载_Mysql备份脚本
  7. html5时间轴列表,HTML5 时间轴/日程安排表模板
  8. asp.net 添加成功弹出个div提示_Word双栏目录怎么做,这3个步骤早知道,让人眼前一亮...
  9. php 添加工信部链接,常见程序(wordpress,dede,discuz)网页下方添加备案号,添加链接跳转到工信部...
  10. 水文特点是什么意思_一级建造师是什么意思?一级建造师报考指南