一、项目简介:
这个项目采用网络编程技术结合CS模型,完成一个简单的类似qq群聊系统
二、项目环境:
- CentOS 7 、 g++
- Json库 :对发送的消息进行序列化和反序列化
- ncurses库:绘制简单的聊天窗口
三、项目模块
1.注册登录模块(注册登录使用的是TCP)
用户进行注册、登陆、和退出时,为了保证信息传输的可靠性,这里用到了TCP协议,并且进行短链接(用的时候链接,不用的时候立即断开)形式,这样可以减少服务器的开销。避免大量链接挂在服务器上,导致服务器瘫痪。
注册:服务器端接收到注册报文时,会调用用户管理模块进行注册请求的处理,服务器会将用户信息插入到服务器用unordered_map(之所以用到unordered_map这个容器,是因为其结构是key,value结构以及底层实现是哈希,这里的key就是我们所对应的用户ID,方便查找,而且效率高)所维护的一张所有用户列表中,当然插入前会对这个表进行对比要是出现信息相同的两个用户,将返回注册失败给用户,否则注册成功返回给用户的一个注册成功的 UserId 。