聊一聊系统 (Linux下实现群聊系统)

本文介绍了一个在Linux环境下实现的群聊系统,利用C/C++、ncurses库、jsoncpp进行数据序列化和反序列化,以及采用多线程和生产者消费者模型来处理用户交互和数据广播。系统包括server、client、data_pool和window模块,实现了用户聊天、状态管理、数据池和界面显示等功能。
摘要由CSDN通过智能技术生成

1.原理


 

  • 客户端从标准输入读取数据,将数据序列化后发送至网络;

  • 服务器端使用多线程+生产者消费者模型

    • 生产者从网络中读取数据,并将读取到的用户信息添加至用户列表中,将数据放至数据池中;

    • 消费者从数据池读取数据,并广播给所有在用户列表中的用户;

  • 数据经过网络以后,反序列化再次发给客户端,实现群聊功能;

 

2.所用技术


    平台: CentOS 7, 64位操作系统

    语言: C/C++

    编译工具: g++

    序列化反序列化工具:  jsoncpp

    窗口设计框架:  nucrse/ncurses

    其他: 生产者消费者模型、信号量互斥机制、多线程编程、socket套接字编程

 

3.系统框架


server模块: 收到用户发送的字符串以后, 将用户信息存储到在线用户表中,将数据存储到数据池中, 再将数据广播给所有在线用户;

client模块: 从标准输入读取用户数据,并且将字符串序列化,发送给服务器; 接收到服务器的数据以后,反序列化,输出到output框;

data_pool模块: 数据池,存放用户发过来的诗句,是一个环形队列描述的;

window模块: 显示用户界面,使用ncurses库实现;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值