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