棋牌源码网

1、修改Cmd_Fish.h,加入函数 ,我这里写成了inline是避免编译时提示重复声明,你也可以将去掉,然后这里只留声明 ,实现挪到别的公共单元的cpp里

2 、象这样,为每一个结构体加上crc字段:
struct CMD_C_Fish20Config {
int crc;
DWORD game_id;
int catch_count;
double catch_probability;
};
3、修改Game_Manager.cpp中的SendSocketData函数:
bool GameManager::SendSocketData(WORD sub_cmdid, void data, WORD data_size) {
if (client_kernel_ == NULL) return false;
if (client_kernel_->IsLookonMode()) return false;
if (data_size>sizeof(int)){
((int )data)=FishCRC32((char )data+sizeof(int),data_size-sizeof(int));
}
return client_kernel_->SendSocketData(MDM_GF_GAME, sub_cmdid, data, data_size);
}
这样子就不用挨个修改上面的函数赋值了

服务器端修改 table_frame_sink.cpp,处理收到游戏消息的命令 ,加上前置的处理:
if (data_size>sizeof(int)){
if(((int )data)!=FishCRC32((char )data+sizeof(int),data_size-sizeof(int))){
//无效的客户端数据包,踢掉他
}
data=(char )data+sizeof(int);
data_size-=sizeof(int);
}


以上修改操作,无非就是加了一个对客户端的服务端验证处理。

本文链接:https://www.jr160.com/game/1497.html

版权声明:

本站发布的内容若侵犯到您的权益,请邮件联系 web58678@gmail.com 删除,我们将及时处理!

从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!

本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。

本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。

若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。