协议层报告

上传人:xzh****18 文档编号:34235604 上传时间:2018-02-22 格式:WPS 页数:17 大小:303.82KB
返回 下载 相关 举报
协议层报告_第1页
第1页 / 共17页
协议层报告_第2页
第2页 / 共17页
协议层报告_第3页
第3页 / 共17页
协议层报告_第4页
第4页 / 共17页
协议层报告_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《协议层报告》由会员分享,可在线阅读,更多相关《协议层报告(17页珍藏版)》请在金锄头文库上搜索。

1、目录一、 协议层概要设计部分.21.协议层设计思想和数据结构:.22.协议层模块图:.33.客户端协议层:.34.服务端协议层:.4二、 协议层详细设计部分.51.客户端注册模块:.52.客户端数据处理模块:.93.客户端打包解包模块.122. 服务端收发模块.131、协议层概要设计部分1.协议层设计思想和数据结构:协议层分为客户端和服务器两种;总共有两个线程,其中接收线程一直存在系统中阻塞读取端口信息,接收到信息后解压解密后发送给应用层。发送线程由用户调用接口函数后开启发送线程,获得发送内容后压缩加密后再打包,发送至服务端。struct client_send_pdu_head/客户发送数据

2、包头部unsigned char sca13;unsigned char pdu_type;unsigned char mr;unsigned char da_len;unsigned char da_typeunsigned 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;unsi

3、gned char oa_typeunsigned char oa12;unsigned char pid;unsigned char dcs;unsigned char 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;;2.协议层模块图:3.客户端协议层:客户端协议层负责对接收和

4、待发送的数据进行处理。应用层接口加密解密压缩解压打包解包发送接收客户端协议层 服务器协议层应用层接口修改转发包接收发送客户端协议层接口:/*应用层发送接口*/unsigned int app_send(const char *app_buf, size_t buf_len, 、const char *number, unsigned short mod);/*应用层接收接口*/unsigned int app_recv(char *app_buf, 手机开机,开启协议层进程开启发送线程 开启接收线程获取套接字和端口阻塞读取取端口内容填写数据结构体信息通信端口发送结构体接收应用层数据并处理读取内

5、容,解析结构体信息拷贝到应用层用户调用发送函数用户调用接收函数压缩加密 解压解密长短信拆分是否发送完毕否结束是拼接短信Size_t buf_len, char *number, char *time);4.服务端协议层:服务器协议需要修改待转发数据包的头部信息。服务器协议层接口:/*服务器发送接口*/unsigned int ser_send(int dest_sockfd, struct client_recv_pdu *temp, size_t temp_size,const char *src_number);开启发送线程 开启接收线程阻塞读取取端口内容填写发送数据结构体信息通信端口接收

6、服务器数据并处理拷贝到服务器服务器调用发送函数服务器调用接收函数开启用户服务线程/*服务器接收接口*/unsigned int ser_recv(int src_sockfd, struct client_send_pdu *temp, size_t temp_size);2、协议层详细设计部分协议层功能描述:协议层分为客户端协议 服务端协议,客户端协议 要负责对客户应用程 需要发送的数据进行处理,处理模的短信协议。并 层进行通信, 服务器 接。有 通用 和 。通 接口 其 层进行通信。服务器协议层 要 在 层进行通信, 修改包头部信息。协议层 :应用层 协议层 短信内容 目的 服务器字。 层

7、 协议层 的短信包。协议层 :协议层 应用层 短信内容和信currency1。协议层 层 需要发送的短信包。协议层接口和“个功能函数:1.客户端注册模块:/*user_registerfi用户在服务器注册功能*const char *servicer_name是服务器字;*const char *number是用户的fl , 为服务器用户的一 *fl 长11个字 ;*const char *usrname是用户用 注册用的用户;*函数 接功套接字; * 接”,-1(FAIL);*服务器,-2(FULL);*服务器 ,-3(REFUSE);*/int user_register(const ch

8、ar *servicer_name, const char *number, const char *usrname);fi 程图:/*test_number用 是否 ;*const char *number是用户的;*长 ,1(ERR_LEN);User_registerTest_numberRegister_pack_setsendReadReply_pack_analysis服务器Refuse服务器fullConnect接Succed接”接功包功发送功读取数据数据接”用户注册 * 字 ,-1(ERR_char);* 0(NOERROR);*/int test_number(const c

9、har *number);fi 程图/*register_pack_set设注册用的数据包,目的currency1为服务器00000,*内容为和用户;*struct client_send_pdu *send_pack是客户发送数据包;*const char *number是用户,*const char *usrname是用户, 注册;*功0;*”1;*/int register_pack_set(struct client_send_pdu *send_pack, const char *number,const char *usrname);fi 程图:test_number个Number

10、i是否数字是否结束结束,0否是是,-1/*reply_pack_analysis用 解析客户端用的数据包;*struct client_recv_pdu *send_pack是客户接收数据包;*功注册:0(SUCCED);* 注册:1(REFUSE);*服务器:2(FULL);*/int reply_pack_analysis(struct client_recv_pdu *recv_pack);fi 程图:register_pack_set数据长Udl=11目的currency1长oal=11目的currency1Oa=00000000000Strcpy(buffer,number)Retu

11、rn02.客户端数据处理模块:/*app_send给应用层发送接口;*int sockfd是注册后的套接字*const char *app_buf是应用层数据 ;*size_t buf_len 应用层数据 ;*const char *dest_number 目的currency1;*mod 是模 , 8 有 , 8 为模 模 *功发送字 数;*”-1;*/int app_send(int sockfd,const char *app_buf, size_t buf_len,const char *dest_number, unsigned short mod);fi 程图:Reply_pack

12、_analysis取 包内容full refuse number2 1 0其 -1/*resolve_pack用对 长短信进行分解;*char *buffer是应用层 的短信内容。*char *send_buf 是用存拆分后待发送的包;*int i 是 开启 个发送线程后发送分解后的 个包。*char *time 短信发送 字 ;*函数 行后有有发完,1;*函数 行后发送数据完毕,0;*/int Resolve_pack(const char *buffer,char *send_buf,int i,char *time);app_sendtest_numberencrypt_app_data

13、compress_app_dataSendEndpack_pdu/*encrypt_app_data对应用层要发送的数据进行加密处理;*char *send_buf是应用层需要发送的数据*size_t buf_len是用户数据 ;* 函数加密功加密后数据 ;*”-1;*/int encrypt_app_data(char *send_buf,size_t buf_len);fi 程图:开分解取内容 中是否到后一个包 是否 到 后一个字 中 到 开头部分/*compress_app_datafi对应用层数据进行压缩;* 个字 的 *char *send_buf是加密的应用层数据*size_t buf_len 是buf的 *功压缩后数据 *”-1;*/int compress_app_data(char *send_buf,size_t buf_

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号