网络编程项目规划
最近在练习一个项目吧,大概给6天的时间来完成它,其中涉及到了数据库的知识,网络编程,linux C等等,大考验的时刻到了!我知道PM们的项目规划图绝对比我的高大上,但是咱也不能没有自信对不?因此,我开始先分析我的项目它有什么功能需求,需求分析完成了,OK,那么项目应该大体上,又是靠什么来实现的呢?这是一个最值得深究的问题!又有人说,那不是得用代码来实现吗?等等,那样你得写到什么时候?因而我们绝对不是先用代码去实现功能,而是把功能提取出来,了解他实现的过程!重要的是什么?嘿嘿,让我来告诉大家,最重要的是数据的协议,没有好的数据协议,我们将会面临的是无尽的BUG,因而协议是本文最终目的,当然非常希望大家通过留言,或者发邮件的方式来指出更加优化的地方,可以共同进步才是真的牛人!
附上我的邮箱:samuel_wnb@live.com
功能需求:
1、注册
2、登陆
3、查看登陆用户
4、私聊
5、群发信息
6、客户端退出保存数据
7、服务器要备份数据
8、root权限
踢出聊天室
禁言
解禁
注销
9、客户端发送表情
10、添加常用语
以上是我项目的功能,下面是我对功能的具体分析,涉及到网络编程,嗯,在做项目的过程中,想办法抽出一定时间来写一些关于调用网络的API的博文,希望大家到时关注,当然我会将我所做的项目公之于众,开源的
-
注册:
-
C :获取用户名&密码&cmd
-
Send struct server
-
S :Check msg
检查数据库,有重名 返回0
检查数据库,可注册 返回1
-
-
登陆:
-
C :获取用户名&密码&cmd
-
Send struct server
-
3、S :Check msg
检查数据库,无此用户 返回0
检查数据库,有此用户 (1)、匹配密码,不正确 返回1 (2)、正确返回2
-
查看登陆用户:
-
C :获取cmd
-
向server发送cmd
-
Server 发送 return 用户数
-
S 向 C写 用户名 写 用户数 次数
-
C向S读 用户名 读 用户数 次数
-
-
私聊
1、C :写入 name 写入 toname msg
2、send data to server
3、S:寻找toname 和在线情况 在线 且名字正确 返回 1
不在线 返回 0
查无此人 返回 -1
-
S:根据数据库所得 向toname发送 该数据协议
-
-
群发
1、C :写入 name msg
2、send data to server
3、S:对比现在在线用户 发送信息
-
保存数据
Sqlite3数据库
二维表关系
chatdata
Id |
名字 |
聊天记录 |
User
Id |
用户名 |
密码 |
Online
Id |
用户名 |
套接字 |
是否禁言 |
Serverdata
Id |
登陆时间 |
-
Root
踢出聊天室 从online 删除
禁言 写判断 每次登陆都要测试是否被禁言
解禁 写禁言命令
注销 直接从user 删除 除非再注册
-
客户端发送表情和添加常用语
跟私聊一样!
经过上面的分析于是我决定使用下面我自己的数据结构体
数据协议 Struct message { Char name[100];//用户名 Char passwd[100];//密码 Int cmd; //命令 Int revert;//返回值 Char toname[100];//私聊对象 Char msg[100];//私聊内容 Int sockfd;//socket客户端套接字 }; |