boost的asio提供了无锁队列和协程。基于这两者可以搭建一个用于基础通讯的tcp服务器。TCP服务器可以自己创建连接连接外部主机也可以在本地端口监听并形成回话。

首先定义接口:

#pragma once#include <vector>
#include <string>#include "ht_memory.h"
#include "ts_ptr.hpp"namespace ht_tcp
{struct data {int i_conn_id;int i_sesson_id;            // 会话ID};class i_session{public:enum e_status{e_status_dead = 0,e_status_read_exit = 1,e_status_write_exit = 2,e_status_disconnected = 4,e_status_connected = 8,e_status_reconnect = 16};public:std::string str_ip_addr;virtual int write(const char* sz_buf, const int& i_len) = 0;virtual int read(ht_memory& mry_out) = 0;virtual e_status status() const = 0;};class session_mgr {private:std::vector<ts_ptr<i_session> > m_vec_sessions;public:session_mgr();};};inline bool match_flag(const unsigned int& u_value, const unsig

boost asio——基于协程的TCP服务器相关推荐

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

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

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

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

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

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

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

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

  5. Boost:以协程的方式实现聊天服务器的实例

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

  6. 基于协程的并发框架orchid简介

    2019独角兽企业重金招聘Python工程师标准>>> orchid简介 什么是orchid? orchid是一个构建于boost库基础上的C++库,类似于python下的geven ...

  7. python模块介绍-gevent介绍:基于协程的网络库

    2019独角兽企业重金招聘Python工程师标准>>> python模块介绍-gevent介绍:基于协程的网络库 介绍 gevent是基于协程的Python网络库.特点: 基于lib ...

  8. 基于select模型的TCP服务器

    之前的一篇博文是基于TCP的服务器和客户机程序,今天在这我要实现一个基于select模型的TCP服务器(仅实现了服务器). socket套接字编程提供了很多模型来使服务器高效的接受客户端的请求,sel ...

  9. python3异步协程爬虫_Python实现基于协程的异步爬虫

    Python实现基于协程的异步爬虫 一.课程介绍 1. 课程来源 本课程核心部分来自<500 lines or less>项目,作者是来自 MongoDB 的工程师 A. Jesse Ji ...

最新文章

  1. Qt学习笔记之样式表
  2. ElementUI中分页Pagination 样式的修改(分页组件的封装)
  3. java 方法 示例_Java 9示例–收集的工厂方法–创建不可修改的列表,集合和映射...
  4. n个节点的二叉树n+1_使用C ++程序将链接列表中的最后N个节点附加到第一个
  5. 手绘导图版:深入解析机器学习在风控场景中的8大应用
  6. Fansblog(HDU-6608)
  7. 解决Axure发布分享预览的3个方法
  8. java代码获取系统时间相差8小时
  9. java 睡眠_Java 线程和多线程执行过程分析
  10. 计算机主板设置语言,bios,教您怎么把电脑BIOS设置成中文
  11. 买到春节回家的票了吗?用Python刷票,还不快来试试!(建议收藏) 为回家做准备...
  12. SRS开启FLV播放
  13. Factory Track 同步获取 Infor CloudSuite Industrial 数据
  14. [PhotoShop]用ps制作遮罩图层
  15. 数据来源渠道及采集工具_几款简单好用的爬虫抓取数据采集工具
  16. centos使用xfreerdp登录报错
  17. The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be reso site:blog.csdn.net
  18. 【高级篇 / FortiGate-VM】(6.4) ❀ 04. 虚拟 PC 通过 FortiGate VM 上网 ❀ FortiGate 防火墙
  19. 国外persona用户画像_使用Mozilla Persona对用户进行身份验证
  20. csdn下载积分兑换网址

热门文章

  1. button标签的type属性
  2. 地缘剧本杀 (五):雨衣人(原创小说连载,内含语音)
  3. @Builder、@SuperBuilder、@Wither、@Accessors
  4. 选择进入IT行业,会后悔吗?
  5. 如何进行需求分析评审
  6. VMware设置共享文件夹之后Linux中看不到怎么办?
  7. 物联网设备安全2.1 酒店门锁和磁卡
  8. Win10 2004版本中关于VT-x技术的大坑
  9. 翻译文本的软件有哪些?这几个翻译工具你可以试试看
  10. 后后后……现代把妹指南