一起聊项目

项目名称:一起聊

实现功能:

类似于多人聊天室,用户在终端输入昵称等个人信息进入聊天室,该用户发送一条消息,在线所有的好友都可以收到,任意在线好友发送的消息,该用户也都可以收到。

使用技术:

socket编程,json,ncurses,生产者消费者模型

开发环境:

Linux(Centos7),C++(C98,C++11),g++(4.8.4),gdb(7.6.1)

网络传输协议:UDP
自定义协议:

采用json格式处理发送的数据和接收的数据

      Json::Value value;                                                                                                                             
      value["name"] = name; //用户昵称                                                                                                                                 
      value["gender"] = gender;  //用户性别                                                                                                                            
      value["age"] = age;   //用户年龄                                                                                                                                 
      value["cmd"] = cmd;  //标志字段,判断是否下线                                                                                                                                  
      value["words"] = words;   //用户真实要发送的消息 
服务器端功能介绍:

(1)负责接收消息所有用户的消息
接收到用户发送消息时,就将该消息保存在一个阻塞队列中
(2)对所有在线用户进行广播消息
从阻塞队列中取出一条消息,然后更新在线好友列表,对在线所有用户发送消息

客户端功能介绍:

(1)负责向服务器发送消息
获取用户输入的消息,将数据格式化,向服务器发送消息
(2)负责接收服务器发来的消息
接收到来自服务器的消息时,就将消息保存在双端队列中,然后更新在线好友列表,显示聊天框

整体设计思想:

这里写图片描述

代码实现链接:https://gitee.com/zhoudandandandanzhou/review/tree/master/chat
项目拓展:
在自己现阶段所学的软件测试基础上,对该项目进行测试
(a)功能测试:前提条件:网络状态良好 + 输入正确的[IP+Port]
(1)输入昵称,性别,姓名,按下回车后出现聊天界面
(2)可以多个用户进入聊天室
(3)在多个用户进入聊天室后,该用户发送一条消息,其他用户都可以收到
(4)在多个用户进入聊天室后,其他所有用户发送的消息,该用户都可以收到
(b)性能测试:
(1)最多有多少个用户可以进入聊天室(最大用户数)
(2)多个用户同时发送消息时,收到消息的延时(服务器的平均响应时间)
(c)界面测试:
(1)在不同的窗口下,仍然可以正常显示聊天界面
(2)消息框和好友列表框大小分布合理够用
(d)易用性测试:
(1)无需注册账号,用户可以用不同的个人信息进行聊天
完。

猜你喜欢

转载自blog.csdn.net/Misszhoudandan/article/details/81544967