資源簡介
一款用C實現(xiàn)的帶協(xié)商的私有通信協(xié)議, 協(xié)議 通信 傳輸 tcp 服務(wù)

代碼片段和文件信息
#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);
/**?
?*?為數(shù)據(jù)包添加頭部
?*
?*?@param?source?[in]?數(shù)據(jù)源
?*?@param?src_len?[in]?數(shù)據(jù)源長度。如果為-1則表示source是以\0結(jié)尾的字符串。
?*?@param?plain_len?[in]?壓縮加密前的數(shù)據(jù)包長度
?*?@param?dest_len?[out]?輸出數(shù)據(jù)的長度
?*
?*?@return?返回添加頭部的數(shù)據(jù)包
?*
?*?@note?注意使用后主動釋放內(nèi)存
?*/
char?*pkg_add_header(const?char?*source?int?src_len?int?plain_len?int?*dest_len);
/**?
?*?獲取數(shù)據(jù)包的包體,去掉包頭。
?*?如果數(shù)據(jù)包完整,則截取完整部分去掉包頭,返回包體,剩余未解析的數(shù)據(jù)包通過source返回。
?*?如果數(shù)據(jù)包不完整,則返回NULL。
?*
?*?@param?source?[in]?數(shù)據(jù)源
?*?@param?source_len?[in]?數(shù)據(jù)源長度
?*?@param?plain_body_len?[out]?加密壓縮前數(shù)據(jù)包體的長度,用于解壓縮數(shù)據(jù)時分配數(shù)據(jù)緩沖區(qū)
?*?@param?cipher_body_len?[out]?輸出數(shù)據(jù)包體的長度
?*?@param?remainLen?[out]?剩余未解析的數(shù)據(jù)包片段的長度
?*
?*?@return?返回去掉頭部的包體
?*
?*?@note?注意使用后主動釋放內(nèi)存
?*/
char?*pkg_get_body(char?**source?int?source_len?int?*plain_body_len?int?*cipher_body_len?int?*remainLen);
/**
?*?將來自網(wǎng)絡(luò)端的數(shù)據(jù)解碼。
?*?服務(wù)器端:解析協(xié)商包和數(shù)據(jù)包
?*?客戶端:解析服務(wù)器響應(yīng)的協(xié)商包和數(shù)據(jù)包
?*?通過回調(diào)函數(shù)返回解析結(jié)果
?*
?*?@param?pkg?[in][out]?協(xié)商結(jié)構(gòu)填充
?*?@param?source?[in]?數(shù)據(jù)源
?*?@param?source_len?[in]?數(shù)據(jù)源長度
?*?@param?plain_body_len?[in]?數(shù)據(jù)包在壓縮加密前的長度
?*?
?*?@return?成功返回0,否則返回錯誤碼
?*/
int?pkg_data_parse(?packet_parser_t?*pkg?const?char*?source?int?source_len?int?plain_body_len);
//?客戶端組裝發(fā)送給服務(wù)器端的協(xié)商包。
char*?pkg_talk_make(const?packet_parser_t?*pkg);
//?服務(wù)器端組裝響應(yīng)給客戶端的協(xié)商包
char*?pkg_talk_rtn(const?packet_parser_t?*pkg);
//?
int?pkg_talk_parse(packet_parser_t?*pkg?const?char*?xml);
//?對數(shù)據(jù)包包體進行壓縮加密
//?壓縮加密后的字符串可能不是以0結(jié)尾的,所以需要返回字符串的長度cipher_body_len
char?*pkg_compress_encrypt(const?packet_parser_t?*pkg?const?char?*source?int?source_len?int?*cipher_body_len);
//?對收到的數(shù)據(jù)包包體進行解密解壓縮
//?由于返回的是明文數(shù)據(jù)包所以不需要返回明文數(shù)據(jù)包的長度(以0結(jié)尾的字符串)
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控件
- 下一篇:用英文單詞模擬數(shù)學(xué)運算
評論
共有 條評論