一个简单的SOCKET程序的数据包结构和封解包函数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一个简单的SOCKET程序的数据包结构和封解包函

练习写套接字通信程序时候写的一段代码,本来想写个聊天室但写来写去

进度卡在界面上接节下来都是通信部分的代码因为只是试验用所以都是用C写

的,等界面部分完工后会用类来封装一下因为本人E文很烂所以变量和函数的

命名是具有中国特色的,求理解.不过我注释的很详细了谨以此文纪念我那坑

爹的编程自学生涯......................#include “stdio.h”#include//////////////////////////////数据包接构////////////////////////////////////////数据包类型CTOS 为客户端使用的数据包, STOC 为服务端使用的数据包#define CTOS 1#define STOC 2//数据包存储管道每个包最大为2000 字节,其中数据载荷为最大1800 字节,其余留着扩展数据

包头struct SJGD {BYTE sjgd[2000]; //数据缓冲区DWORD sjcd; //数据长度};//数据包头大小为8 字节struct MSG_TOU { DWORD lxid; //数据包类型DWORD sxid; //数据包顺序标号DWORD sjbcd; //数据包长度};//服务端-》客户端包struct MSG_STOC { DWORD cmd; //命令标识DWORD sjbcd; //整个MSG_STOC 数据包缓冲区的长度BYTE shuju[1000]; //附加数据缓冲区};//客户

端-》服务器包struct MSG_CTOS { DWORDcmd; //命令标识DWORD sjbcd; //整个MSG_CTOS 数据包缓冲区的长度BYTE shuju[1800]; //附加数据缓冲区};//共

用体union MSG_DATA { struct MSG_STOC msg_stoc; struct MSG_CTOS msg_ctos; };//完整数据包struct SJB {struct MSG_TOU tou; //数据包头unionMSG_DATA data; //数据缓冲区};

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////封包函数第一个参数为数据包类型,第二个为命令标

识,这是数据包的重点远控命令会转换成数字在这里传输//第三个为数据包顺序

相关文档
最新文档