当前位置: 首页 > news >正文

班级网站建设维护自己怎么制作网站

班级网站建设维护,自己怎么制作网站,制作网页网站教程,接到了给政府做网站这是一个 CPacket 类,用于解析包含固定格式的数据。该类的成员变量包括固定包头 sHead、包长度 nLength、控制命令 sCmd、包数据 strData 和和校验 sSum。 构造函数: CPacket():默认构造函数,初始化成员变量。 CPacket(const B…

这是一个 CPacket 类,用于解析包含固定格式的数据。该类的成员变量包括固定包头 sHead、包长度 nLength、控制命令 sCmd、包数据 strData 和和校验 sSum。

构造函数:

CPacket():默认构造函数,初始化成员变量。

CPacket(const BYTE* pData, size_t& nSize):参数化构造函数,用于解析传入的数据(pData),并根据解析结果更新传入的数据大小nSize。如果解析成功,nSize 将被更新为实际有效数据的大小。

解析包数据:

通过循环遍历传入的数据,查找固定包头 0xFEFF 的位置。
如果找到包头,解析包的其他字段,包括包长度 nLength、控制命令 sCmd、包数据 strData 和和校验 sSum。
在解析过程中,对包数据的完整性进行了检查,确保包头和其他字段都能正确解析。
如果包的数据完全接收,并且和校验通过,更新传入的 nSize 为实际解析的包大小。

#pragma pack(push)
#pragma pack(1)
class CPacket
{
public:CPacket() :sHead(0),nLength(0),sCmd(0),sSum(0) {}// 复制构造函数CPacket(const CPacket& pack) {sHead = pack.sHead;nLength = pack.nLength;sCmd = pack.sCmd;strData = pack.strData;sSum = pack.sSum;}// 运算符重载CPacket& operator=(const CPacket& pack) {if (this != &pack) {sHead = pack.sHead;nLength = pack.nLength;sCmd = pack.sCmd;strData = pack.strData;sSum = pack.sSum;}return *this;}// 打包CPacket(WORD nCmd, const BYTE* pData, size_t nSize) {sHead = 0xFEFF;nLength = (DWORD)nSize + sizeof(WORD) * 2;sCmd = nCmd;if (nSize > 0) {strData.resize(nSize);memcpy((void*)strData.c_str(), pData, nSize);}else {strData.clear();}sSum = 0;for (size_t j = 0; j < strData.size(); j++){sSum += BYTE(strData[j]) & 0xff;}}// 解析包数据CPacket(const BYTE* pData, size_t& nSize) {size_t i = 0;for (; i < nSize; i++) {if (*(WORD*)(pData + i) == 0xFEFF) {sHead = *(WORD*)(pData + i);i += sizeof(WORD);break;}}// 包数据可能不全,或者包头未能全部接受到if ((i + sizeof(DWORD) + sizeof(WORD) + sizeof(WORD)) > nSize) {nSize = 0;return;}nLength = *(DWORD*)(pData + i); i += sizeof(DWORD);// 包未完全接受,解析失败if (nLength + i > nSize) {nSize = 0;return;}sCmd = *(WORD*)(pData + i); i += sizeof(WORD);if (nLength > sizeof(WORD) * 2) {strData.resize(nLength - sizeof(WORD) * 2);memcpy((void*)strData.c_str(), pData + i, nLength - sizeof(WORD) * 2);i += nLength - sizeof(WORD) * 2;}sSum = *(WORD*)(pData + i);i += 2;WORD sum = 0;for (size_t j = 0; j < strData.size(); j++) {sum += BYTE(strData[j]) & 0xff;}if (sum == sSum) {nSize = i;return;}nSize = 0;//解析失败}int Size() {//包数据大小return nLength + sizeof(WORD) + sizeof(DWORD);}const char* Data() {//获取包数据strOut.resize(Size());BYTE* pData = (BYTE*)strOut.c_str();*(WORD*)pData = sHead;pData += 2;*(DWORD*)pData = nLength;pData += 4;*(WORD*)pData = sCmd;pData += 2;memcpy(pData, strData.c_str(), strData.size());pData += strData.size();*(WORD*)pData = sSum;return strOut.c_str();}~CPacket() {}
public:WORD sHead;//固定包头 0xFEFFDWORD nLength;//包长度(控制命令到和校验)WORD sCmd;//控制命令std::string strData;//包数据WORD sSum;//和校验std::string strOut;//整个包的数据
};
#pragma pack(pop)
http://www.hkea.cn/news/432877/

相关文章:

  • 口碑好的句容网站建设yahoo搜索
  • 深圳网站建设外贸公司价格网络营销的背景和意义
  • 长春网站建设硕成传媒seo快速排名优化公司
  • web网站开发能使用c 吗免费建立个人网站申请
  • 织梦网站修改教程视频网站优化培训学校
  • 南沙区交通和建设局网站中国十大网络销售公司
  • 免费建设网站的方法百度网址大全 官网
  • 手机网站设计制作公司微信推广费用一般多少
  • 建设网站需要什么注册域名费用一般多少钱
  • 女性门户网站源码百度指数功能有哪些
  • 怎么帮公司做网站建设谷歌搜索引擎免费入口 香港
  • 请写出网站建设前期需要做的准备外贸定制网站建设电话
  • 南京门户网站建设网络营销优秀案例
  • 2012服务器如何做网站周口网络推广哪家好
  • 贵阳搜索玩的网站网络舆情软件免费入口
  • 前端自己写代码建网站要花多少钱游戏推广在哪里接活
  • 网站建设中+网页代码nba最新排名东西部
  • 东莞企业建设网站官网有限公司百度推广深圳分公司
  • 海外推广工作内容搜索引擎优化seo是什么
  • wordpress 发短信西安网络优化大的公司
  • dreamweaver个人网站南宁求介绍seo软件
  • 网站常用素材企业培训视频
  • 北京市通州区建设委员会网站网站新站整站排名
  • 太原网站推广只选中联传媒推广排名seo
  • 企业网站建设的常见流程为百度互联网营销顾问
  • 养殖企业网站网络营销策划名词解释
  • 如何进行电子商务网站推广?百度网盘app
  • 做情趣网站需要什么资质sem推广外包
  • 国外网站做任务赚钱的最近新闻有哪些
  • 建设部网站查资质中裕隆百度推广登录平台网址