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
linux在线聊天报告,EChat: Linux下基于命令行的在线聊天系统相关推荐
- linux命令音乐视频合并,Linux下基于命令行的音乐播放器 (1)
按照同事的话说,我是一个十足的命令控. 利用最近项目通宵发布的空闲时间中,写了一个命令行下的音乐播放器,以满足我在linux命令下的需求. 播放器利用技术: Python+GST(http://gst ...
- linux 命令行 播放器,Linux下基于命令行的音乐播放器
玩家使用技术: Python + GST()+控制台解析 播放器自我维持操作: 1. 播放 2. 下一首 3. 上一首歌 4. 暂停 5. 查看播放列表信息 6. 查看当前的播放信息 7. 停止(退出 ...
- 树莓派linux界面命令行,Linux/Raspberry Pi下使用基于命令行的网页浏览器
本文将向你介绍如何在树莓派上安装3个不同的基于文本的网页浏览器.大多数的网页浏览器在小派上运行都有点吃力,要不就是会消耗大量资源,所以一个替代方案就是使用一个基于命令行的网页浏览器. 到目前为止基于文 ...
- Linux下用命令行彻底删除文件
一.Linux下用命令行彻底删除文件 Linux下一般会使用删除键或者rm命令.将文件扔到垃圾箱.但是,这些方法并没把文件从我们的电脑里彻底删除,只是把文件隐藏起来,让用户看不见而已. 1. shre ...
- linux终端上网,ubuntu中上网-如何使用ubuntu下用命令行上网?ubuntu下用命令行上网, 爱问知识人...
2013-08-01 09:07:16 用于基本接口与IP配置的ifconfig ifconfig工具(interface configurator,接口配置器)提供了一些非常基本但是非常重要的功能. ...
- Linux 下从命令行打开pdf文件和html文件的命令
Linux 下从命令行打开pdf文件和html文件的命令 [日期:2012-06-18] 来源:Linux社区 作者:hipercomer [字体:大 中 小] 如果你经常工作在Linux终端下,某个 ...
- linux下使用命令行分区、格式化文件系统、更新卷标名称
2019独角兽企业重金招聘Python工程师标准>>> linux下分区.格式化文件系统.更新卷标名称,这些操作比较少用,但比较繁琐,下面记录一下. 1. 分区,一般使用fdisk, ...
- Linux命令行如何编辑word文档,在Linux平台下用命令行工具显示Word文档
在Linux平台下用命令行工具显示Word文档 ·Antiword ·Catdoc ·wvWare[@more@] Viewing Word files at the command line Wed ...
- linux 命令行 播放器,linux下的命令行播放器moc
linux下的命令行播放器moc 安装:直接APT-GET sudo apt-get install moc 安装完成后在终端用命令mocp(注意不是命令moc啊)打开moc播放器. 他默认是没有配置 ...
最新文章
- iphone连上wifi却上不了网_路由器上不了网怎么解决 路由器上不了网解决方法【详解】...
- WinCvs 操作参考手册
- sap 状态栏添加竖线
- B18_NumPy副本和视图(视图或浅拷贝、副本或深拷贝、深浅拷贝)
- PHP 面向对象:类和对象
- 在Linux系统环境下修改MySQL的root密码
- vue+elementUI的el-form的回车键登录
- 中国互联网Web2.0 100名单
- OpenGL学习笔记:GLAD和第一个窗口
- 用DiskGenius彻底删除文件能不能确保无法恢复
- 用手机远程登录电脑,太高端了。。。。
- MeeGo系统和SailFish系统_我是亲民_新浪博客
- python视频教程大全(转载)
- 《惢客创业日记》2021.04.24-30(周六)惢客拾金演示词
- 几种网站压力测试工具调研与使用
- 安卓测试工具:Appium 环境安装(mac版本)
- Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL
- php中urlencode与urldecode
- UML diagrams
- 架构高可用之限流-抽刀断水水更流
热门文章
- 正则表达式 判断 连号如“123456”、同号如“888888”、连同号如“112233”“222333”...
- 2003-can't connect to MYSQL server on 'localhost'(10038)
- java设置imageview图片大小_java – 在android中设置imageview
- linux驱动编写(看门狗)
- verilog学习记(快速入门)
- python 仿真模拟_Python SimPy 仿真系列 (1)
- python语言基本认识_Python基础语法合集——了解python
- linux 系统 指令lis,常用Linxu系统监控命令
- python代码雨_pygame实现烟雨蒙蒙下彩虹雨
- linux系统上安装toma,Linux-tar - osc_btnnkvs0的个人空间 - OSCHINA - 中文开源技术交流社区...