发布C++实现的TCP网络框架Khala

1、Khala简介

  Khala(卡拉)是用C++实现的TCP网络框架。底层采用muduo网络库作为网络IO+线程模型,并封装实现了网络实现与业务逻辑分离的多线程网络框架,具有超时退出、多设备多事件注册支持、设备生命周期管理、设备间通信等功能。

项目托管地址:https://github.com/moyangvip/khala

2、底层支持

  Khala底层采用muduo作为网络IO支持。muduo类似于市面上一些常用开源event-driven网络库(如libevent),实现了基于Reactor模式的非阻塞IO 机制,线程部分采用 one loop per thread + thread pool 模型。muduo源码:https://github.com/chenshuo/muduo。关于muduo更多的介绍可参见陈硕的《Linux多线程服务端编程》一书。

3、设备继承

  用户在使用Khala框架时,无需关心底层网络IO及多线程模型的实现,只需为具体设备定制业务逻辑所需的消息响应事件。同时用户定义的设备支持多级继承。比如可以定制一类设备叫"灯设备",并为"灯设备"定制"开关"事件。然后可以定制一类新的设备叫"智能灯",并继承"灯设备"和定制"光照强度检测"事件,则"智能灯"将不但拥有"光照强度检测"的响应事件,还具有"灯设备"能够支持的所有响应事件。通过这种机制能够很好的实现不同设备的多级继承体系。

  Khala框架组成的多级设备继承图,下一级设备类型在注册自己的消息响应事件的同时,也将继承支持上一级设备类型支持的全部消息响应事件,同时还能对上一级设备类型实现的某些消息响应事件进行重新实现。

4、设备生命周期

  Khala默认实现的设备类型分为两类,即临时设备类型和登录设备类型。临时设备类型里面可以提供一些基础的对所有设备的通用消息响应事件,比如查询当前设备类型、查询系统当前时间等。用户同样可以在此注册符合自己业务需求的通用的消息响应事件。

  同时Khala提供了登录管理设备类型。在登录管理设备类型中,Khala提供了设备的生命周期管理。

  在设备生命周期中,Khala提供了相关的接口给用户,用于实现在不同时期进行不同操作和制定相关消息响应。

  为了防止某些非法连接长期与服务端建立连接,占用系统资源,Khala支持超时检测退出机制。用户可以设置最大连接时间,一个连接在该时间段内未发送有效事件消息,将被强制断开连接。目前超时连接只针对临时连接设备,未来考虑对登录连接设备同样支持超时检测退出。

  最后Khala还提供了设备管理支持,用户能够通过相关接口查询相关连接信息和登录设备信息。并实现在不同设备间进行消息通信功能。

5、适用场景

  局域网内基于tcp长连接的设备管理,多设备间通信等。同时对于最常见的聊天室等功能,Khala也只需用户编写极少数代码即可实现。

6、关于Khala

  Khala来源于StarCraft,是StarCraft中Protoss信仰的一种宗教。同时它也是Protoss间的精神网,能够对每一个连接了Khala的Protoss提供精神连接。

  Khala框架最开始起源于我对某个智能家居项目的思考。在学习了陈硕的muduo网络库后之后,我产生了基于该网络库进行进一步封装的想法,并一个人用三周时间完成了这个开源框架的设计和大致代码实现。在之前并没有太多C++相关的项目经历,对于服务端编程的经验也仅学习自《UNP卷一》和陈硕介绍muduo相关的《Linux多线程服务端编程》,在开发过程中并无导师、大牛的指点,本质上是一款供学习交流类型的代码。设计出于个人的思考理解,代码写得也不好看,估计还有很多bug,功能也不完善。待日后慢慢学习慢慢改吧。

  希望自己能够每周发布1-2篇相关的学习文档。 也希望对这方面有经验的同学能够多多拍砖,或者对这方面有兴趣的加入我一起学习一起交流。

邮箱:[email protected]

QQ:1030507918

7、参考书目

W.Richard Stevens:《UNIX网络编程 卷一》

陈硕:《Linux多线程服务端编程》

时间: 2024-08-02 02:45:23

发布C++实现的TCP网络框架Khala的相关文章

关于linux内核的tcp ip网络框架实现

关于linux内核的tcp ip网络框架实现 上图是linux内核的tcp ip网络框架实现 需要注意的是,linux采用函数指针的方式来模拟"面向对象"概念的动态函数绑定.所以需要仔细看上面的函数指针实际指向的函数,才能知道上面的tcp.ip的函数如何被调用到的.上图需要仔细看. 注意箭头方向,表明了函数传递数据和获取数据的方向. 下面引用一下<深入Linux内核架构>的图 更详细的内容请参见我的视频课程:<深入linux内核>https://edu.51ct

Android网络框架OkHttp之get请求(源码初识)

概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天又发布了.以下以OkHttp3.2版本为准,没办法,上个星期看的时候还是以3.2为最新版本的.首先,我们要先了解一些背景,OkHttp这个框架是有Square公司推出的,进入官网.如果想看API,点击进入API.大概了解了OkHttp之后,我们应该知道OkHttp是一个网络框架,想想以前在开发中,网

python 网络框架twisted基础学习及详细讲解

twisted网络框架的三个基础模块:Protocol, ProtocolFactory, Transport.这三个模块是构成twisted服务器端与客户端程序的基本. Protocol:Protocol对象实现协议内容,即通信的内容协议ProtocolFactory: 是工厂模式的体现,在这里面生成协议Transport: 是用来收发数据,服务器端与客户端的数据收发与处理都是基于这个模块 在windows中安装twisted需要先安装pywin32,自己去下载下就行.随后pip instal

android 网络框架 源码分析

android 网络框架 源码分析 导语: 最近想开发一个协议分析工具,来监控android app 所有的网络操作行为, 由于android 开发分为Java层,和Native层, 对于Native层我们只要对linux下所有网络I/O接口进行拦截即可,对于java 层,笔者对android 网络框架不是很了解,所以这个工具开发之前,笔者需要对android 的网络框架进行一个简单的分析. 分析结论: 1. android 的网络框架都是基于Socket类实现的 2. java 层Socket

基于NIO的Netty网络框架

Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果. Netty的优点有: a.功能丰富,内置了多种数据编解码功能.支持多种网络协议. b.高性能,通过与其它主流NIO网络框架对比,它的综合性能最佳. c.可扩展性好,可通过它提供的ChannelHandler组件对网络通信方面进行灵活扩展. d.易用性,API使用简单.

GJM : Unity3D 常用网络框架与实战解析 【笔记】

Unity常用网络框架与实战解析 1.Http协议          Http协议                  存在TCP 之上 有时候 TLS\SSL 之上 默认端口80 https 默认端口是443                  Http 请求响应模型 Http协议永远都是客户端发送请求,服务器端会送响应                 Http工作流程 1.连接 2.请求(Request) 3.响应(Response)          Http请求响应报文           

Java EE 架构设计——基于okhttp3 的网络框架设计

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/77893903 本篇文章带大家设计一套满意业务需求.代码健壮高效(高内聚低耦合)并且可拓展的网络框架.以最新的okhttp3为基础设计出高效可靠的网络缓存.多线程文件下载等架构模块.从此不局限于使用别人的框架,而步入了设计框架,让自己可以走的更远,我觉得这才是一名合格开发者所应该具备的能力.在开发中,选择一个开源框架的标准有很多,例如学习成本.文档是否齐全.github星数量.现在

Android网络框架源码分析一---Volley

转载自 http://www.jianshu.com/p/9e17727f31a1?utm_campaign=maleskine&utm_content=note&utm_medium=mobile_author_hots&utm_source=recommendation 公司最近新起了一个项目,对喜欢尝鲜的我们来说,好处就是我们可以在真实的项目中想尝试一些新技术,验证想法.新项目对网络框架的选取,我们存在三种方案: 1.和我们之前的项目一样,使用Loader + HttpCli

python2.0_s12_day10_Twsited异步网络框架

Twsited异步网络框架 Twisted是一个事件驱动的网络框架,其中包含了诸多功能,例如:网络协议.线程.数据库管理.网络操作.电子邮件等. Package application Configuration objects for Twisted Applications Package conch Twisted Conch:The Twisted Shell.Terminal emulation,SSHv2 and telnet Module copyright Copyright i