《短信收发系统设计【项目设计报告】》由会员分享,可在线阅读,更多相关《短信收发系统设计【项目设计报告】(50页珍藏版)》请在金锄头文库上搜索。
1、 项目设计报告 上海易嵌 项目名称: 短信收发系统设计 项目负责人: 汤汝 项目时间: 组员: 邵林、陈阳、余刚 目录概要设计部分3一、设计需求3客户端要求3服务端要求3限制性需求4项目分配情况4二、体统总体结构图5三、模块介绍51.服务器52. 协议层83. 应用层模块11详细设计部分13一、 服务器设计与分析(负责人:余刚)13服务器应用层输入输出13模块功能函数13二、协议层设计与分析(负责人:汤汝)211.客户端注册模块212.客户端数据处理模块:253.客户端打包解包模块284.服务端收发模块29三、应用层设计与分析(负责人:邵林、陈阳)321. 各函数模块介绍321.1短信设置模块
2、321.2短信编辑模块351.3短信操作模块361.4保存模块392. 视图模块对的构建422.1已发件箱422.2 草稿箱模块432.3 写信箱442.4 发件箱模块452.5 收件箱模块452.6 短信设置模块462.7 自定义文件夹模块47概要设计部分一、设计需求使用TCP/IP协议模拟GSM协议设计短信收发系统。客户端要求1. 客户端第一界面为写短信,收件箱,发件箱,已发件箱,草稿箱,短信设置。用户可自定义文件夹。2. 写短信界面进入后需要输入收件人和短信内容,收件人可以从电话本模块中选择,也可以直接输入号码,如输入号码和电话本中存在记录匹配,需直接显示为电话本中姓名,输入完成后可进行
3、发送操作或存入草稿箱。3. 收件箱中存储从网络端收到的短信,收件箱中的短信按照接受时间排序,未读短信需要被标识。对收件箱的操作包括删除短信(包括单条删除,多条删除和全部删除),显示短信数量,按发件人排序。单独对每个短信条目的操作包括删除,回复,转发,查看信息详情,将发件人保存至电话本,将短信内容中号码保存至电话本,将短信条目移至自定义文件夹。4. 发件箱中保存正在发送中的短信,如发送成功,则短信转存至已发件箱中。如发送失败,则短信仍保存在发件箱中。对发件箱的操作包括删除短信(包括单条删除,多条删除和全部删除),显示短信数量。单独对每个短信条目的操作包括删除,转发,发送。5. 已发件箱中保存发送
4、成功的短信,对已发件箱的操作包括删除短信(包括单条删除,多条删除和全部删除),显示短信数量,按收件人排序。单独对每个短信条目的操作包括删除,转发,查看信息详情,将收件人保存至电话本。6. 草稿箱存储短信编辑的草稿,对草稿箱的操作包括删除短信(包括单条删除,多条删除和全部删除),显示短信数量。单独对每个短信条目的操作包括删除,发送。7. 自定义文件夹由用户定义,用户可定义自定义文件夹名称。对自定义文件夹的操作包括删除文件夹,删除短信(包括单条删除,多条删除和全部删除),显示短信数量。对单条短信的操作同收件箱。用户可定义多个自定义文件夹。8. 短信设置中条目项为 是否匿名发送,当前容量显示,自定义
5、文件夹管理,是否开启发送报告,短消息服务中心设置,信息有效期,短信黑名单功能。自定义文件夹管理包括创建自定义文件夹,重命名自定义文件夹,删除自定义文件夹。服务端要求服务器端需实现接收,存储和转发三种基本功能。另需根据SMS协议标准实现延时发送,定时发送,匿名发送,短信屏蔽功能。服务器端需启动守护进程。短信服务器:A、提供用户管理表B、提供短信发送日志并通知是否到达客户手机C、提供短信接收日志并响应客户端程序连接请求D、短信内容服务可主要分为点播和订阅两张,点播类型随机发生,用户需要该信息临时点播,为一次服务,订阅信息由用户定制订阅关系,服务方按时向全部订阅者发送同样的信息E、手机用户在申请使用
6、服务方所提供的信息服务前,需要注册。注册中要对手机用户进行验证,验证通过后注册成功限制性需求1 短信字符编码要求根据SMS协议实现。2 客户端电话本条数最大200条。客户端短信最大条目数为300条。最大条目数指所有短信文件夹内包括的条目数总量。服务器端存储容量不做限制。四 安全性及可靠性需求1 要求网络传输非明码传输,并保证网络传输数据之可靠性。2 要求服务器端稳定安全。3 要求客户端存储安全。项目分配情况责任人任务备注汤汝总体设计报告,协议层的设计报告,以及实现与调试,应用层电话簿功能实现。确保协议层的实现,负责审核各个模块的设计,提供参考性意见。余刚服务器设计报告,服务器的实现与调试。确保
7、服务器的稳定安全。陈阳、邵林应用层设计报告,应用层的实现与调试。良好的界面控制,程序的稳定与安全。全体成员对项目进行综合性调试与测试。确保实现基本功能的前提下进行版本的升级。二、体统总体结构图三、模块介绍1.服务器负责人:余刚服务器设计为多线程程序,每次用户注册后创建线程为其提供服务。每次用户退出结束结束服务线程。服务器运行开启守护进程,负责写日志以及清理到期的发送失败短信。其响应流程图如下:每次用户开机时都与服务端建立连接,检查服器失败队列中是否有自己的消息。服务器收到后保存该用户的id号到数组中,并记录总个数。当用户关机后,服务器与他断开连接,删除数组中的id号,并个数减一。线程接收短信包
8、后提取目的地址,分析目的地址,设置源地址,转发;线程处理流程如下:接收模块:当用户发送信息报时,服务器接收并保存。解析模块:将信息报的信息解析出来(包括目的地址,源地址,大小,内容)存入结构体中。发送模块:将结构体发送到目的地址。提供短信发送日志并通知是否到达客户手机发送失败分析:1. 若对方手机未开机,则服务器保存消息,等待用户开机后再发送。2. 若是网络问题则重新发送,并确认是否接受成功。服务器数据结构:Struct list_fail_pack *head /失败队列头节点(全局)#define total 100 /服务器能接受客户端的个数int count 记录当前连接客户的个数St
9、ruct clientInt client_fd;/套接字描述符Char number12;/电话号码Pthread_t thread_id;/线程IDStruct client *next; /用户连接时发送给服务器的结构体,记录用户信息Struct list_headStruct list_head *prev;Struct list_head *next;Struct fail_packStruct client_send_pack tmp;Struct time timestamp;/发送失败后保存的结构体Struct list_fail_packStruct List_head li
10、st_h;Struct fail_pack f_pack;/建立失败内容链表2. 协议层协议层分为客户端和服务器两种;总共有两个线程,其中接收线程一直存在系统中阻塞读取端口信息,接收到信息后解压解密后发送给应用层。发送线程由用户调用接口函数后开启发送线程,获得发送内容后压缩加密后再打包,发送至服务端。Struct client_send_pdu_head/客户发送数据包头部Unsigned char sca13;Unsigned char pdu_type;Unsigned char mr;Unsigned char da_len;/目的地址长度Unsigned char da_type;Un
11、signed char da11;/目的地址Unsigned char pid;Unsigned char dcs;Unsigned char vp;Unsigned char udl;/用户数据长度;Struct client_recv_pdu_head/客户接收数据包头部Unsigned char sca13;Unsigned char pdu_type;Unsigned char oa_len;/源地址长度Unsigned char oa_typeUnsigned char oa11;/源地址Unsigned char pid; Unsigned char dcs; Unsigned c
12、har scts7;Unsigned char udl;/用户数据长度;Struct client_send_pdu/客户端发送数据包 Struct client_send_pdu_head head;Char buffer140;;Struct client_recv_pdu/客户端接收数据包Sturct client_recv_pdu_head head;Char buffer140;;协议层模块图:客户端协议层:服务端协议层:服务器协议需要修改数据包头部信息,在将发送用户填充到源地址里去;客户端协议层接口:/*应用层发送接口*/Unsigned int app_send(const ch
13、ar *app_buf, size_t buf_len,const char *number);/*应用层接收接口*/Unsigned int app_recv(char *app_buf,size_t buf_len,char *number);服务器协议层接口:/*服务器发送接口*/Unsigned int ser_send(int dest_sockfd, struct client_recv_pdu *temp, size_t temp_size,const char *src_number);/*服务器接收接口*/Unsigned int ser_recv(int src_sockf
14、d, struct client_send_pdu *temp, size_t temp_size);3. 应用层模块短信系统设计短信应用层概要流程图。应用层包括收件箱、写短信、发件箱、草稿箱、已发件箱、短信设置和私密信箱(自定义文件夹)七大功能,每个功能有各自的子功能。应用层通过两个进程进行短信收发及其它信息的传递。应用层将短信信息及各种标志传递给协议层,协议层经过处理发送给服务器,服务器通过处理后发送到指定客户端,经协议解析后发送给应用层。应用层读取信息并显示给用户。 应用层运行设计:应用程序由系统开机时启动协议层进程,短信进程和电话簿进程;其中启动协议层进程时注册用户到服务器;与服务器建立连接;短信进程中建立接收线程,阻塞接收服务器短信服务信息。在调用发送函数时,启动发送线程,发送完毕结束发送线程。电话簿进程提供联系人信息。应用层运行流程图:应用层数据结构:typedef struct msm/短信结构体 char phn