linux在线聊天报告,EChat: Linux下基于命令行的在线聊天系统

概要设计0.0.1 2019/10/13

EasyChat

client.c 功能描述

1.1 echat 建立与服务器的连接 登录

1.2 echat -h 说明用法

1.3 echat register 注册(暂不实现)

登录成功 提示符echat >>

2.1 exit 退出

2.2 search 查找已有聊天室

2.3 join id 加入已有聊天室

进入聊天室后提示符 echat room >>

3.1 send

3.2 exit

server.c 功能描述

监听端口,处理消息

程序语言 C/C++

开发环境 Linux

报文规则

客户端发送

login:name:passwd 登录报文,name与passwd均不含:,报文均以\0结尾

服务器端接受报文,对于未登录的客户端,仅处理login报文

对于登录成功的客户端,忽略登录报文

服务器用集合(或其它数据结构)储存已登录客户

服务器返回报文:login:success or login:fail

如前所述,对于成功登录的客户端,可以发送其它命令报文(未登录成功也可以发送,但服务器不处理)

display:user:all 列出所有用户,其状态为online or disable(不可见,离线或隐身,隐身暂时不考虑)

display:user:online 列出在线用户

display:space 列出不加密的聊天室(后续功能会对聊天室添加密码功能)

space:create:name 创建聊天室 name不唯一,有唯一的id

space:join:id 加入聊天室

space:leave:id (不加id,则服务器判断处于哪个id,这取决于我们是否支持同时加入多聊天室)

聊天室所有用户都离开则关闭聊天室,聊天室id短暂保留,leave是主动离开

聊天室不区分权限,(没有群主)

space:send : id :message 发送消息 (同上,若不支持多聊天室,id不必加)

总结:服务器目前支持三类报文

login 登录 (TCP断开连接则认为是注销)

display 查询 查询用户或聊天室,服务器只处理已登录客户

space 聊天室相关

服务器端报文

login:success | fail

对于没登录的客户端login报文,成功或失败,发送此报文

对于已登录的客户端login报文,不发送

对于未登录客户端的其他报文(非login)发送login:fail

对于已登录的客户端的其他报文

发送

status:text;data: text

text是json格式字符串,以{开头 }结尾

status和data中间以;隔开

status描述用户权限,错误信息等,data是客户端主要展示的内容

上诉报文字段,格式,分隔符仅供参考

客户端程序流程

EChat [-r -h -u [name] ] -r注册 -h帮助 -u以用户名name登录

login:

passwd:

成功后提示符 EChat > 接收命令

q 退出,断开TCP,服务器标记此用户(sockfd而不是用户名)未登录

display user all

display user online

display space

与上诉报文对应,发送display: 报文

create space name

发送创建聊天室请求,服务器分配id

join id

发送加入某个聊天室请求

help

客户端打印用法,display create join等

其他命令,告知用户命令不合法,输入help可查看命令

成功进入聊天室后提示符 EChat spacename

键入单独q,发送退出聊天室报文,退出聊天室

键入>, >后面均为要发送的内容,无需转义

(或者提示符是>> 默认是要发送消息,删除一个>可以键入q,推荐上面那种做法)

服务器端程序

数据结构与函数

一个set or map 存储已客户

一个map存储部分用户名密码,起到缓存作用,不用频繁读数据库

一个struct维护space

一个函数结束、分拣报文

几个函数处理报文,组装response

一个函数回复报文

notice

数据结构可以用C++标准库,C外部库或自己实现(倾向于前两种)

数据库

database test;

table user;

name(key) passwd

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值