设计 概要文档:需求表
-----------------------------------------------------------
选择用线程实现该聊天室项目
-----------------------------------------------------------
-----------------------------------------------------------
<命令>
-----------------------------------------------------------
1.普通用户
hlp 帮助信息显示
log 登录;
reg 注册;
pto 悄悄话;
cto 群发消息;
vim 查看在线用户;
vom 查看所有用户;
cat 查看聊天历史记录;
fac 特殊表情;
esc 退出
2.超级管理员
除上述命令外
kic 踢人;
scl 禁言;
rcl 撤销禁言;
-----------------------------------------------------------
<客户端部分>
-----------------------------------------------------------
一、登录:log
1.密码:不固定长度,最多20位,最少6位。密码不显示出来用*代替。
2.ID:用数组实现最多20位。
3.输入错误有提示。
a.用户已登录
b.用户未注册
c.输入密码不正确
d.超规定范围出
二、注册:reg
1.ID:用数组实现,最多20位。存在数据库中。
2.密码:不固定长度,最多20位,最少6位。密码不显示出来用*代替。
3.注册信息存放在数据库中
三、聊天:pto 、cto
1.私聊:输入pto\进入私聊状态,在对话中将对话内容存入该用户名下的
name.txt 中
2.群发:输入cto\进入群发状态
将会话内容存入 crowd.txt 中
四、查看:
1.查看当前在线用户:
2.用户查看历史聊天记录:
五、特殊表情:
1.输入 "smile:\" ~(^_^)~
2.输入 "angry:\" \(>n<)/
3.输入 "tried:\" ~(*.*)~
4.输入 "happy:\" \(^O^)/
六、退出:
1.只退出登陆不退出客户端
-----------------------------------------------------------
<服务器部分>
-----------------------------------------------------------
一、登录:
1.显示有用户登录,显示姓名和ID。例如:state 0:name 127.0.0.1
2.显示出错信息。
a.用户已登录
b.用户未注册
c.输入密码不正确
d.超规定范围
3.保存错误日志。
二、注册:
1.ID:用数组实现,最多20位。存在数据库中。
2.密码:不固定长度,最多20位,最少6位。
3.注册信息存放在数据库中
4.显示新注册了一个用户。例如:state 1:name
三、聊天:
1.私聊:
a.显示聊天状态
b.显示聊天发起者和接收者。例如 state 2:name to name
2.群发:
a.显示聊天状态
b.显示聊天发起者。例如 state 3:this is name call
将会话内容存入 man.txt 中
四、查看:state 4:
1.查看当前在线用户:
2.用户查看历史聊天记录:
3.查看离线用户:
五、退出:
1.只退出登陆不退出客户端:state 5:
a.显示用户退出。例如:state 5:name exit
————————————————————————————————————————————————————————————
实现方法
————————————————————————————————————————————————————————————
1.建立通信协议 TCP—4
注意反馈
2.action 动作 置位
a用户给服务器发动作1。2。3。4。5 (对应相关操作)
b登录
客户端用结构体封装协议
统一c-s间格式
3.在线登录用户链表
a服务器建立
b用户登陆时将用户accept id 和用户名