本篇文章主要介绍了"发布C++实现的TCP网络框架Khala",主要涉及到Linux多线程,网络编程,github方面的内容,对于C/C++jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
1、Khala简介 Khala(卡拉)是用C++实现的TCP网络框架。底层采用muduo网络库作为网络IO+线程模型,并封装实现了网络实现与业务逻辑分离的多线...
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提供精神连接。