话说,Redis 创始人 antirez 最近开源了一个小项目 BOTLIB。这是用纯 C 语言代码编写的 Telegram Bot 框架 。
下面是它的GitHub仓库:
整个代码结构如下:
基础数据结构
全局变量 struct chatState *Chat用来存储所有的状态信息;
struct client *clients[MAX_CLIENTS]数组,用来存储所有客户端的fd以及用户昵称。
代码流程
1.initChat初始化全局变量,同时创建服务端监听fd保存到全局变量Chat->serversock中
2.开始while死循环
3.先初始化fd_set集合
4.将监听fd和客户端fd放入到fd_set集合中
5.调用系统函数select对fd_set集合进行事件监测,同时将监测到结果保存到fd_set中
6.最后在分别对监听fd和客户端fd在结果fd_set中是否有事件进行判断7.分别进行对应的业务处理
代码结构很清晰,很适合初学C语言的同学拿来练手网络编程。
后续代码还会增加对称加密/更高级的网络模型等等,可以持续关注学习。整个的网络IO的处理和Redis源码关于网络IO的处理有很多的相似之处。
作者:万能的大雄
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。