基于UDP的网络群聊系统

本系统所涉及到的知识与技术
1、了解Linux操作系统,熟悉基本指令的使用。
2、熟悉Linux开发环境,熟练使用vim, gcc/g++, gdb, make/makefile 等开发工具的使用,学会编写基本的Makefile文件。
3、了解网络, 熟悉数据封包,路由过程。了解协议分层。熟悉udp协议。了解tcp可靠性和udp协议特点。
4、熟练掌握C/C++语言,熟练使用C++ STL中常见容器的使用。如vector,map等。
5、 熟悉生产者消费者模型(本项目服务器端使用单生产者,单消费者模型)
6、熟悉网络套接字编程,至少了解UDP服务器的编写。
7、熟悉线程编程,了解信号量。
8、了解shell编程。
本系统使用的开源/系统库
1.jsoncpp:基于C++编写的json库,提供数据的序列化和反序列化功能
2.ncurse/ncursew:可以使应用程序直接控制终端屏幕显示的库,本项目中,该库为我们提供基本的窗口界面。
3.pthread:Linux系统下的多线程遵循POSIX线程接⼜口,称pthread,本项目中,我们使用该库提供基本的线程控制功能。
设计概图
基于UDP的网络群聊系统

client模块:群聊系统client上层逻辑,提供client底层通信
server模块:群聊系统server上层逻辑,提供server底层通信
coom模块:群聊系统底层公共逻辑,如数据序列化与反序列化。
window模块:client窗口模块
lib第三⽅方库模块:提供第三⽅方库模块
plugin插件起停服务脚本模块:起停服务脚本

client模块 && server模块
基于UDP协议,完成基本的数据报发送,该模块统⼀一发送string,不对数据进⾏行任何解释。具体数据报的字段解析,由上层完成。
客户端利用多线程处理事务:
第一个线程处理header窗口;
第二个线程处理输出窗口和在线好友列表窗口;
第三个线程处理用户输入窗口;
基于UDP的网络群聊系统
client:
基于UDP的网络群聊系统
server:
基于UDP的网络群聊系统
coom模块
基于jsoncpp,提供基本数据序列化和反序列化功能,以及提供各种server和client公共部分模块。
基于UDP的网络群聊系统
基于UDP的网络群聊系统
window模块
基于ncurses 提供client窗口功能.
基于UDP的网络群聊系统
简易窗口
基于UDP的网络群聊系统

成果示意图:
1、进入系统
基于UDP的网络群聊系统
2、多人进入系统
基于UDP的网络群聊系统
3、好友离线
基于UDP的网络群聊系统
基于UDP的网络群聊系统
源码戳这里:网络群聊系统