• 多功能聊天室-项目规划实现图


    网络编程项目规划

    最近在练习一个项目吧,大概给6天的时间来完成它,其中涉及到了数据库的知识,网络编程,linux C等等,大考验的时刻到了!我知道PM们的项目规划图绝对比我的高大上,但是咱也不能没有自信对不?因此,我开始先分析我的项目它有什么功能需求,需求分析完成了,OK,那么项目应该大体上,又是靠什么来实现的呢?这是一个最值得深究的问题!又有人说,那不是得用代码来实现吗?等等,那样你得写到什么时候?因而我们绝对不是先用代码去实现功能,而是把功能提取出来,了解他实现的过程!重要的是什么?嘿嘿,让我来告诉大家,最重要的是数据的协议,没有好的数据协议,我们将会面临的是无尽的BUG,因而协议是本文最终目的,当然非常希望大家通过留言,或者发邮件的方式来指出更加优化的地方,可以共同进步才是真的牛人!

    附上我的邮箱:samuel_wnb@live.com

    功能需求:

    1、注册

    2、登陆

    3、查看登陆用户

    4、私聊

    5、群发信息

    6、客户端退出保存数据

    7、服务器要备份数据

    8、root权限

    踢出聊天室

    禁言

    解禁

    注销

    9、客户端发送表情

    10、添加常用语

    以上是我项目的功能,下面是我对功能的具体分析,涉及到网络编程,嗯,在做项目的过程中,想办法抽出一定时间来写一些关于调用网络的API的博文,希望大家到时关注,当然我会将我所做的项目公之于众,开源的

    1. 注册:
      1. C :获取用户名&密码&cmd
      2. Send struct server
      3. S :Check msg

        检查数据库,有重名 返回0

        检查数据库,可注册 返回1

     

    1. 登陆:
      1. C :获取用户名&密码&cmd
      2. Send struct server

    3、S :Check msg

    检查数据库,无此用户 返回0

    检查数据库,有此用户 (1)、匹配密码,不正确 返回1 (2)、正确返回2

    1. 查看登陆用户:
      1. C :获取cmd
      2. 向server发送cmd
      3. Server 发送 return 用户数
      4. S 向 C写 用户名 写 用户数 次数
      5. C向S读 用户名 读 用户数 次数

    2. 私聊

      1、C :写入 name 写入 toname msg

      2、send data to server

      3、S:寻找toname 和在线情况 在线 且名字正确 返回 1

      不在线 返回 0

      查无此人 返回 -1

      1. S:根据数据库所得 向toname发送 该数据协议

    1. 群发

      1、C :写入 name msg

      2、send data to server

      3、S:对比现在在线用户 发送信息

    2. 保存数据

      Sqlite3数据库

      二维表关系

                                                             chatdata

    Id

    名字

    聊天记录

                                                               User

    Id

    用户名

    密码

                                                              Online

    Id

    用户名

    套接字

    是否禁言

                                                             Serverdata

    Id

    登陆时间

     

    1. Root

      踢出聊天室 从online 删除

      禁言 写判断 每次登陆都要测试是否被禁言

      解禁 写禁言命令

      注销 直接从user 删除 除非再注册

    2. 客户端发送表情和添加常用语

      跟私聊一样!

       

       

      经过上面的分析于是我决定使用下面我自己的数据结构体

    数据协议

    Struct message

    {

    Char name[100];//用户名

    Char passwd[100];//密码

    Int cmd; //命令

    Int revert;//返回值

    Char toname[100];//私聊对象

    Char msg[100];//私聊内容

    Int sockfd;//socket客户端套接字

    };

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    第15周作业
    软件工程结课作业
    第13次作业--邮箱的正则表达式
    第12次作业
    第10次作业
    Java 8 新的时间日期库
    你还在用if-else吗?
    Java并发编程:4种线程池和缓冲队列BlockingQueue
    ZooKeeper学习第八期——ZooKeeper伸缩性(转)
    ZooKeeper学习第七期--ZooKeeper一致性原理(转)
  • 原文地址:https://www.cnblogs.com/samuelwnb/p/3918551.html
Copyright © 2020-2023  润新知