资源简介
一款用C实现的带协商的私有通信协议, 协议 通信 传输 tcp 服务
代码片段和文件信息
#include
#include
#include “packet.h“
#include “iks/dom.h“
#include “iks/iksemel.h“
#include “encrypt/ert_rsa.h“
#include “encrypt/ert_aes.h“
#include “encrypt/ert_des3.h“
#include “compress/cps_zlib.h“
#include “util.h“
void set_content(const char *source char **dest);
int set_cps_type(const char *src packet_parser_t *pkg);
int cmp_cps_type(const char *src packet_parser_t *pkg);
void set_heatbeat(const char *sponsor const char* seconds packet_parser_t *pkg);
int set_talk_crt_type(const char* src packet_parser_t *pkg);
int set_transfer_crt_type(const char* src packet_parser_t *pkg);
int cmp_transfer_crt_type(const char* src packet_parser_t *pkg);
int set_talk_crt_public_key(const char* src packet_parser_t *pkg);
int set_talk_crt_private_key(const char* src packet_parser_t *pkg);
int set_transfer_crt_key(const char* src packet_parser_t *pkg);
char* get_transfer_crt_key(const packet_parser_t *pkg);
int set_client_id(const char* src packet_parser_t *pkg);
int set_cert_id(const char* src packet_parser_t *pkg);
int set_client_subject(const char* src packet_parser_t *pkg);
int set_client_signature(const char* src packet_parser_t *pkg);
int set_talk_type(int type packet_parser_t *pkg);
/**
* 为数据包添加头部
*
* @param source [in] 数据源
* @param src_len [in] 数据源长度。如果为-1则表示source是以\0结尾的字符串。
* @param plain_len [in] 压缩加密前的数据包长度
* @param dest_len [out] 输出数据的长度
*
* @return 返回添加头部的数据包
*
* @note 注意使用后主动释放内存
*/
char *pkg_add_header(const char *source int src_len int plain_len int *dest_len);
/**
* 获取数据包的包体,去掉包头。
* 如果数据包完整,则截取完整部分去掉包头,返回包体,剩余未解析的数据包通过source返回。
* 如果数据包不完整,则返回NULL。
*
* @param source [in] 数据源
* @param source_len [in] 数据源长度
* @param plain_body_len [out] 加密压缩前数据包体的长度,用于解压缩数据时分配数据缓冲区
* @param cipher_body_len [out] 输出数据包体的长度
* @param remainLen [out] 剩余未解析的数据包片段的长度
*
* @return 返回去掉头部的包体
*
* @note 注意使用后主动释放内存
*/
char *pkg_get_body(char **source int source_len int *plain_body_len int *cipher_body_len int *remainLen);
/**
* 将来自网络端的数据解码。
* 服务器端:解析协商包和数据包
* 客户端:解析服务器响应的协商包和数据包
* 通过回调函数返回解析结果
*
* @param pkg [in][out] 协商结构填充
* @param source [in] 数据源
* @param source_len [in] 数据源长度
* @param plain_body_len [in] 数据包在压缩加密前的长度
*
* @return 成功返回0,否则返回错误码
*/
int pkg_data_parse( packet_parser_t *pkg const char* source int source_len int plain_body_len);
// 客户端组装发送给服务器端的协商包。
char* pkg_talk_make(const packet_parser_t *pkg);
// 服务器端组装响应给客户端的协商包
char* pkg_talk_rtn(const packet_parser_t *pkg);
//
int pkg_talk_parse(packet_parser_t *pkg const char* xml);
// 对数据包包体进行压缩加密
// 压缩加密后的字符串可能不是以0结尾的,所以需要返回字符串的长度cipher_body_len
char *pkg_compress_encrypt(const packet_parser_t *pkg const char *source int source_len int *cipher_body_len);
// 对收到的数据包包体进行解密解压缩
// 由于返回的是明文数据包所以不需要返回明文数据包的长度(以0结尾的字符串)
char *pkg_uncompress_decrypt(const packet_parser_t *pkg const char *source int source_len int plain_body_len
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-04-24 17:51 packet\
目录 0 2013-08-20 11:19 packet\.svn\
文件 2442 2013-08-20 11:19 packet\.svn\entries
目录 0 2013-04-24 17:50 packet\.svn\prop-ba
文件 53 2012-11-29 13:14 packet\.svn\prop-ba
目录 0 2013-08-22 17:27 packet\.svn\props\
目录 0 2013-04-24 17:51 packet\.svn\text-ba
文件 1284 2012-11-30 09:13 packet\.svn\text-ba
文件 45 2012-11-30 09:13 packet\.svn\text-ba
文件 23143 2012-12-03 11:19 packet\.svn\text-ba
文件 4209 2012-11-30 09:13 packet\.svn\text-ba
文件 878 2012-11-30 09:13 packet\.svn\text-ba
文件 21504 2012-11-30 09:13 packet\.svn\text-ba
文件 2490 2012-11-30 09:13 packet\.svn\text-ba
文件 5287 2012-11-30 09:13 packet\.svn\text-ba
文件 143 2012-11-30 09:13 packet\.svn\text-ba
文件 2148 2012-11-30 09:13 packet\.svn\text-ba
文件 2546 2012-12-03 11:19 packet\.svn\text-ba
文件 661 2012-12-03 11:19 packet\.svn\text-ba
文件 126 2012-12-03 11:19 packet\.svn\text-ba
文件 86717 2012-11-30 09:13 packet\.svn\text-ba
目录 0 2013-08-20 11:19 packet\.svn\tmp\
目录 0 2013-08-22 17:27 packet\.svn\tmp\prop-ba
目录 0 2013-08-22 17:27 packet\.svn\tmp\props\
目录 0 2013-08-22 17:27 packet\.svn\tmp\text-ba
文件 1284 2012-11-29 09:18 packet\Makefile
文件 45 2012-11-29 09:18 packet\README.md
目录 0 2013-04-24 17:51 packet\compress\
目录 0 2013-08-20 11:19 packet\compress\.svn\
文件 521 2013-08-20 11:19 packet\compress\.svn\entries
目录 0 2013-08-22 17:27 packet\compress\.svn\prop-ba
............此处省略74个文件信息
- 上一篇:GIFView控件
- 下一篇:用英文单词模拟数学运算
相关资源
- linux下的一个异步通信的串口类
- 3GPP_TS_25.331RRC协议中文版.pdf
- vs+qt+qgis环境下通过串口通信接收数据
- 软件合作开发协议
- 山东科技大学计算机网络试题
- 威纶触摸屏MODBUS协议的测试数据,与
- AVR-ATmega16双机通信双向,并带反馈I
- 通信协议面试总结
- 基于通信原理的2fsk,2ask,2dpsk2psk的
- 51单片机模拟IIC协议读写EEPROM(24C02)
- Modbus协议在TCP/IP上 的实现指南
- 基于TCP的协议的聊天程序
- wsn 路由协议 仿真
- FPGA实现UART串口通信最全资料
- 基于最小跳数的无线传感器网络路由
- 点对点的FTP文件传输
- ADXL345加速度传感器SPI通信程序
- NRFL2401无线模块
- 移动通信网络优化大纲
- 中文版的GSM协议,内容很好的介绍
- 大学通信原理迫零算法自己编写的程
- Qt编写串口通信程序图文详解
- 虚幻4网络通信教程
- 基于51单片机DHT11温湿度检测和串口通
- 上海交通大学通信原理期末考试试题
- TCPIP协议族 答案
- 遥感监测影像保密协议
- v2v信道仿真与特性研究
- 扩频通信系统仿真.zip
- ns 2 中DSR协议代码
评论
共有 条评论