资源简介
一款用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控件
- 下一篇:用英文单词模拟数学运算
相关资源
- Modbus协议官方文档中、英文全
- 易语言OTG串口通信
- 并购重组资料(协议模板)
- STM32 2.4G通信例程
- 基于FPGA的sdi视频传输工程(k7_sdi_rx
- Visio图标-最新最全的网络通信图标库
- 由浅入深,蓝牙4.0/BLE协议栈开发攻略
- 基于蓝牙4.0的设备通信方案设计与实
- ASUS BIOS 加NVME协议文件: Nvme.ffs NV
- 安卓QQ6.71协议源码易语言,qq协议源码
- WPF USB 网络 串口 通信软件
- 使用选择性重传协议实现UDP可靠通信
- DELPHI与西门子200PLC的串口通信实例
- modbus通讯协议详解
- Labview与CH372CH375的通信测试
- 通信软件的具体实例──基于Socket的
- h225协议 RAS信令
- PC -- 单片机的串口数据传输系统设计
- Openssl给文件传输加密
- 防火墙编程-Visual C 网络通信开发
- 安卓协议QQ源码包附模块源码
- tftp文件传输工具
- 通信原理各种调制与解调的C程序
- 课程设计蔬菜大棚自动控制系统,包
- 用C 实现的对网络上的ARP数据包进行
- MCGS与单片机通信
- 清华通信重要国际学术会议目录
- ns2下leach协议源码
- 基于swing的简单聊天器(兼传输文件)
- 基于ARM蓝牙传输源程序
评论
共有 条评论