最近把之前写的聊天室项目重新整理了一遍,写个笔记记录一下编程思路。
版本一的聊天室没有图形化界面,服务前端没有使用多线程,使用tcp协议,select多路复用,基本实现登陆注册、修改密码、私聊、群聊、VIP功能(禁言、踢出群聊)(大概就这些时间久远)。https://download.csdn.net/download/dada12138/11664793
版本二的通讯系统,使用tcp/udp双协议进行通信,服务器端使用线程池进行线程管理,epoll实现多路复用,客户端使用gtk制作图形化界面,基本实现登陆注册(自动登陆,记住密码)、增添好友、创建群聊、私聊、群聊、聊天记录、退出群聊、删除好友、传输文件(传输大文件有bug未修复)等功能。
1、数据库模块
使用sqlite3数据库(没有使用主键外键,用的非常生硬的进行数据库操作)。
客户端建立用户数据库,用户使用记住密码功能时将用户的用户id,昵称,密码保存在用户数据库中,另外每个用户建立专属的数据库保存发送消息记录和未收消息记录。
服务器端建立用户数据库(保存用户总表),各个用户的专属数据库(保存各自的好友表,群组表,聊天记录表,文件接收表),群组数据库(保存群组成员表,群组总表)。
2、通信模块
服务器端与客户端之间的通信使用tcp协议,客户端和客户端之间的通信使用udp协议。