【boost】boost::asio(3)——socket编程
来源:互联网 发布:安卓网络聊天室破解版 编辑:程序博客网 时间:2024/06/14 07:25
asio的主要用途还是用于socket编程,本文就以一个tcp的daytimer服务为例简单的演示一下如何实现同步和异步的tcp socket编程。
一、同步服务器版本
客户端
客户端的代码如下:
主要流程如下:
(1)通过tcp::socket类定义一个tcp client对象socket
(2)通过connect函数连接服务器,打开socket连接。
(3)通过read_some函数来读数据
另外,还可以通过write_some来写数据,通过close来关闭socket连接(这里是通过释放socket对象隐式释放连接)。
服务器
服务器代码如下:
主要流程如下:
(1)通过tcp::acceptor类创建一个tcp server对象,并绑定端口(也可以不在构造器中自动绑定,而通过bind函数手动绑定)
(2)通过accept函数获取远端连接
(3)通过远端连接的write_some函数将数据发往客户端
二、异步服务器
前面的服务器是同步版本,在大并发的场景下一般需要用到异步socket。服务器的异步版本如下:
这个异步版本的逻辑倒不是很复杂,基本上和.net中传统的异步socket相似,不过需要注意的是,由于c++中内存需要自己管理,而asio框架也没有提供任何管理机制,因此需要注意async_accept、async_send等函数的参数生命周期,切记不能在里面传入栈变量的引用。如果是堆变量,需要确保释放,本例中我是通过share_ptr来实现的自动释放。
更多的示例请参看asio官方文档。
阅读全文
0 0
- 【boost学习】之boost::asio(3)——socket编程
- 【boost】boost::asio(3)——socket编程
- boost.asio系列——socket编程
- boost.asio系列——socket编程
- boost.asio系列——socket编程
- boost.asio系列——socket编程
- Boost asio—— 网络编程
- boost::asio::socket
- boost::asio::socket::async_read_some
- boost asio socket
- 【boost】boost::asio(2)——io_service
- [Boost基础]并发编程——asio网络库——同步socket处理
- [Boost基础]并发编程——asio网络库——异步socket处理
- boost-asio学习2——同步、异步socket处理
- boost::asio编程-域名解析
- boost asio编程笔记
- boost asio网络编程
- Boost asio学习笔记—— 网络编程
- python训练模型上线问题总结
- gcc添加自写头文件的问题解决
- DAO和Service层的一些解释
- 欢迎使用CSDN-markdown编辑器
- Spring Data JPA
- 【boost】boost::asio(3)——socket编程
- kafka_consumer接口(旧版)
- 谈一谈iOS中的多线程
- Drawerlayout侧滑菜单
- MQTT--入门(二)
- Spring Boot 内嵌Tomcat的端口号的修改
- lucene7.1.0 (三) 索引的curd
- SpringBoot 基于swagger实现RESTfulApi风格
- 微信公众平台测试账号的注册与申请