基于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,本项目中,我们使用该库提供基本的线程控制功能。
设计概图
这里写图片描述

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

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

成果示意图:
1、进入系统
这里写图片描述
2、多人进入系统
这里写图片描述
3、好友离线
这里写图片描述
这里写图片描述
源码戳这里:网络群聊系统

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值