Redis之父用纯C语言代码实现Telegram Bot框架

话说,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的处理有很多的相似之处。