您的位置:首页 > 理论基础 > 计算机网络

基于UDP的网络群聊系统

2017-07-27 22:16 218 查看
本系统所涉及到的知识与技术

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、好友离线





源码戳这里:网络群聊系统
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息