| 
 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); 
} 
这样子就不用挨个修改上面的函数赋值了。 
 
4、服务器端修改 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); 
 }   
 
 
 |