实现Linux环境下的简易聊天室,采用C/S模型,实现多客户端之间的稳定数据传输。可参考QQ、微信功能。
1.账号管理
登录、注册
找回密码
2.好友管理
私聊(实时性)
好友的添加、删除、查询
查看好友列表
显示好友状态(在线与否)
查看聊天记录
屏蔽好友消息
3.群管理
群聊(实时性)
群的创建、解散(群主才有的权限)
申请加群、退群
查看已加群、查看群成员
查看聊天记录
设置群管理员
踢人(群主或管理员才有的权限)
4.发送文件
文件传输
5.离线传输
离线消息,上线及时发送
离线文件,上线及时提醒有文件传送
6.关于客户端与服务器要求
稳定性
要能处理大量客户端的连接与信息处理、传输
服务器稳定,不会因客户端的意外情况退出
数据正常接受、处理、发送
有容错处理,避免因非法输入导致C/S崩溃
高效性
服务器日志,记录服务器的状态信息
7.相关技术要求
I/O 多路复用(epoll)
mysql
相关文档
服务器采用创建一定数量线程,每个线程都使用epoll,等待有套接字加入epoll,主线程监听是否有客户连接,将客户端套接字描述符平均加入epoll线程。
如果你要使用,需要更改服务器中连接数据库时的部分内容,还有需要提前创建一些表。
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 | |
+-----------+-------------+------+-----+---------+-------+
×××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 | |
+-------+--------------+------+-----+---------+-------+