聊天室项目(二)-总结

一. 引言
  1. 聊天室基于C/S模型设计
  2. 开发工具

Deepin GNU/Linux 20.2.1  
gcc编译器

  1. 项目参考
名称
LinuxC编程实战
CSDN
  1. 术语表
术语说明性定义
C/Sclient/server模型
epollI/O多路复用
二. 功能:
  1. 登录、注册
  2. 好友的增、删、查、屏蔽、私聊、查找聊天记录
  3. 群的增、删、查、设置管理、群聊、踢人
  4. 文件传输
  5. 支持部分离线
三. 概述:

聊天室基于C/S模型设计,所用数据库为MYSQL

C/S模型:

在这里插入图片描述

服务端用到epoll+单线程实现
客户端分两个线程-一读一写
1 服务端
 运用了epoll+单线程
 在这里插入图片描述
1 第一先处理连接请求,事件请求等待
2 若文件描述符可读则处理此事件

2 客户端
 开了两个线程,一个接收服务器发的包,一个向服务器发包
 在这里插入图片描述1.第一目录:注册登录
2.第二目录:细分为-朋友、群、修改密码、好友请求、退出
3.第三目录:实现聊天室的各项功能

因为客户端开了两个线程,不可避免遇到同步处理问题
解决办法:使用条件变量实现线程同步

四. 部分功能设计展示:
  1. 登录注册界面
     在这里插入图片描述

  2. 分类界面
    在这里插入图片描述

  3. 朋友管理界面
    在这里插入图片描述

  4. 群管理界面  在这里插入图片描述

  5. 本机私聊界面
     在这里插入图片描述私聊没有私聊窗口,格式不够美观,后续会继续改进,也可以加入左右格式,这样更好区分两人,就不用把账号输出来了

6.查看好友列表
在这里插入图片描述具体功能在另一篇博客展示

五. 数据库建表:

聊天室建立了六张表

在这里插入图片描述
friend:存好友及其关系
group_mess:存放群内人的信息
groups:存放群信息
message:存放好友私聊消息
password:存放修改密码的时间
user:存放个人信息

六. 编译运行

服务端:

gcc -I/usr/include/mariadb/mysql server.c -lmysqlclient -ldl -lpthread -o server
./server

客户端:

gcc client.c -o client -lpthread
./client -a 127.0.0.1 -p 4507 【-a后加IP,-p后加设置端口号

七. 存在的问题:
  1. 基础功能有实现,但进阶功能没有实现,后面会继续修改
  2. 客户端登录状态会异常断开,这需要后续继续修改
  3. 文件传输有时会传不过去
  4. 服务端实用性较差,后续会继续完善
  5. 还没有解决客户端突然断开,客户端登录状态问题

github聊天室项目源码链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值