关于ghost 网络数据解析的学习心得。(怎么解决欺骗型数据包 或者ping数据包导致服务端宕机)

首先声明,本人在学习阶段,所以所讲之处!难免会出错且啰嗦,本文旨在跟大家分享近期对iocp(window高并发服务器编程)的几点心得。大神欢迎大家喷我。
先为大家介绍一个c++高并发的大神群!
群主非常热情,而且技术实力雄厚。只要大家能虚心学习,群主每天群里分享面试以及编程经验。欢迎加入QQ群49114021 名字是高性能服务器开发 群主 范蠡³² 教授级大神。 本人仅仅群内潜水小鸟一个。请勿见笑。

本文也可以叫做,
判断封包是否属外来封包正确手段之一。

ghost的虽然作为10年前的传奇作品,在iocp网络编程这块依然是可圈可点的。这次因为学习iocp模型顺带就看了下高手们写的(或者改版的)各种版本的ghost远控的代码。
关于网络数据解析
CIOCPServer::OnClientReading(ClientContext* pContext, DWORD dwIoSize)
OnClientReading 本函数负责接收数据,并且接下出包头,这里所指的包头其实是一个五位数的字符串,
BYTE bPacketFlag[] = {‘G’, ‘h’, ‘o’, ‘s’, ‘t’}; //这里是数据发送的标记 主控端同被控端字符必须一致。
收到数据包,服务端或者客户端先解析数据包前5个字节!如果是,那就继续接下后面的数据 一次是 包长 跟具体数据,如果前5个字节不是这几个字符那么久直接丢弃 具体:
memcmp(pContext->m_byInBuffer, m_bPacketFlag, FLAG_SIZE) == 0)

通过这点学习 我们就很容易解决我遇到的一个难题,当我收到一个不认输的数据包的时候,我的服务端就直接宕机了。 通过学习我很完美的解决了问题依葫芦画瓢 加入封包验证即可。

小鸟初次写博客!大神略过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GhostNet是一种轻量级的神经网络,被设计用于图像分类任务。GhostNet的设计目标是在保持较高精度的同时,尽可能减少模的参数量和计算复杂度。 GhostNet的源码解析涉及一些细节,我会尽量以简洁的方式进行解释。请注意,以下解析基于我对GhostNet的了解,可能与实际源码实现略有不同。 GhostNet的主要特点之一是使用了Ghost Module(幽灵模块)。Ghost Module是一种特殊的模块,用于替代传统的卷积操作。它通过将一个较大的卷积核分解为一个较小的卷积核和一个稀疏矩阵(称为幽灵通道),以减少参数量和计算复杂度。这种分解可以在一定程度上保持模的特征表达能力。 在GhostNet中,幽灵通道是通过对输入特征图进行一系列线性变换得到的。这些线性变换可以通过1x1卷积层或全连接层来实现。然后,幽灵通道与小卷积核进行卷积操作,得到最终的输出特征图。 除了Ghost Module,GhostNet还使用了一些其他的优化技巧来进一步减少模的参数量和计算复杂度。例如,使用了深度可分离卷积(depthwise separable convolution)来减少计算量,使用了SE模块来增强模的表达能力。 总的来说,GhostNet是一种轻量级的神经网络,通过使用Ghost Module和其他优化技巧,可以在图像分类任务上取得较高的精度,并减少模的参数量和计算复杂度。具体的源码实现可以在相关的开源项目中找到。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值