Skip to content

This is a chat room developed by C language running on the linux operating system.

Notifications You must be signed in to change notification settings

yclchuxue/chatroom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

chatroom

项目简述

实现Linux环境下的简易聊天室,采用C/S模型,实现多客户端之间的稳定数据传输。可参考QQ、微信功能。

项目需求

1.账号管理

登录、注册
找回密码

2.好友管理

私聊(实时性)
好友的添加、删除、查询
查看好友列表
显示好友状态(在线与否)
查看聊天记录
屏蔽好友消息

3.群管理

群聊(实时性)
群的创建、解散(群主才有的权限)
申请加群、退群
查看已加群、查看群成员
查看聊天记录
设置群管理员
踢人(群主或管理员才有的权限)

4.发送文件

文件传输

5.离线传输

离线消息,上线及时发送
离线文件,上线及时提醒有文件传送 

6.关于客户端与服务器要求

稳定性
要能处理大量客户端的连接与信息处理、传输
服务器稳定,不会因客户端的意外情况退出
数据正常接受、处理、发送
有容错处理,避免因非法输入导致C/S崩溃
高效性
服务器日志,记录服务器的状态信息

7.相关技术要求

I/O 多路复用(epoll)
mysql
相关文档

服务器架构

服务器采用创建一定数量线程,每个线程都使用epoll,等待有套接字加入epoll,主线程监听是否有客户连接,将客户端套接字描述符平均加入epoll线程。

mysql 中使用的表

如果你要使用,需要更改服务器中连接数据库时的部分内容,还有需要提前创建一些表。

需要提前准备的mysql tables

student(用户列表)
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id         | int(11)     | YES  |     | NULL    |       |
| password   | varchar(20) | YES  |     | NULL    |       |
| name       | varchar(20) | YES  |     | NULL    |       |
| qu         | varchar(50) | YES  |     | NULL    |       |
| an         | varchar(50) | YES  |     | NULL    |       |
| zt         | int(11)     | YES  |     | NULL    |       |
| hylb       | varchar(20) | YES  |     | NULL    |       |
| sj         | int(11)     | YES  |     | NULL    |       |
| fd         | int(11)     | YES  |     | NULL    |       |
| grouptable | varchar(20) | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

allgroup(所有群聊信息)
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | YES  |     | NULL    |       |
| name  | varchar(20)  | YES  |     | NULL    |       |
| cylb  | varchar(20)  | YES  |     | NULL    |       |
| jl    | varchar(20)  | YES  |     | NULL    |       |
| qu    | varchar(100) | YES  |     | NULL    |       |
| an    | varchar(50)  | YES  |     | NULL    |       |
| zt    | int(11)      | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+

box(通知信息)
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| from_id | int(11)      | YES  |     | NULL    |       |
| end_id  | int(11)      | YES  |     | NULL    |       |
| message | varchar(100) | YES  |     | NULL    |       |
| ZT      | int(11)      | YES  |     | NULL    |       |
| ice     | int(11)      | YES  |     | NULL    |       |
| beizhu  | varchar(20)  | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+

document(传文件信息)
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| from_id   | int(11)     | YES  |     | NULL    |       |
| end_id    | int(11)     | YES  |     | NULL    |       |
| file_name | varchar(40) | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+

程序自动创建的mysql tables

×××hylb(×××的好友列表)
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(11)     | YES  |     | NULL    |       |
| beizhu | varchar(20) | YES  |     | NULL    |       |
| jl     | varchar(20) | YES  |     | NULL    |       |
| zt     | int(11)     | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

***grouptable(***所加群列表)
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| sf    | int(11)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

******(***和***的聊天记录)
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| from_id | int(11)      | YES  |     | NULL    |       |
| xinxi   | varchar(200) | YES  |     | NULL    |       |
| end_id  | int(11)      | YES  |     | NULL    |       |
| zt      | int(11)      | YES  |     | NULL    |       |
+---------+--------------+------+-----+---------+-------+

***cylb(群***的成员列表)
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| sf    | int(11)     | YES  |     | NULL    |       |
| day   | int(11)     | YES  |     | NULL    |       |
| time  | int(11)     | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

***jl(群***的聊天记录)
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | YES  |     | NULL    |       |
| name  | varchar(20)  | YES  |     | NULL    |       |
| xinxi | varchar(100) | YES  |     | NULL    |       |
| day   | int(11)      | YES  |     | NULL    |       |
| time  | int(11)      | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+

About

This is a chat room developed by C language running on the linux operating system.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages