您的位置:首页 > 理论基础 > 计算机网络

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

2018-07-31 18:54 309 查看

首先声明,本人在学习阶段,所以所讲之处!难免会出错且啰嗦,本文旨在跟大家分享近期对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)

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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐