RAKNET内核 - Secure Connections 网络通讯安全连接

来源:互联网 发布:淘宝88会员什么意思 编辑:程序博客网 时间:2024/05/29 19:19

1. 前言

随着游戏上线运营之后,一些心怀不轨的玩家就会通过网络攻击或者窃取的方式来作弊,最常见的就我们所说的外挂。那么RakNet是如何规避这些玩家的攻击呢?

RakNet使用传统的网络安全连接的方法从第一步就禁止非常规终端连接到服务器。

本文不使用理论性的对话,只使用简单的例子演示如何对RakNet的网络通讯信息进行加密。本文的基于《RAKENT创建UDP实例,RAKNET简单通讯实例》只上,建议先阅读该篇文章。


2. RakNet Secure Connections处理流程

  1. 全局定义      #define LIBCAT_SECURITY 1
  2. 包含头文件  #include "SecureHandshake.h"
  3. 服务器生成公钥和私钥,并且把生成的公钥给客户端使用
  4. 客户端使用公钥连接服务器

3. Server 服务端处理程序

#if LIBCAT_SECURITY==1#include "SecureHandshake.h"#endifint main(void){RakNet::RakPeerInterface *server=RakNet::RakPeerInterface::GetInstance();  server->SetIncomingPassword("user_defined_string", (int)strlen("user_defined_string"));  server->SetTimeoutTime(30000,RakNet::UNASSIGNED_SYSTEM_ADDRESS);  // 只需要下面这段代码#if LIBCAT_SECURITY==1cat::EasyHandshake handshake;char public_key[cat::EasyHandshake::PUBLIC_KEY_BYTES];char private_key[cat::EasyHandshake::PRIVATE_KEY_BYTES];handshake.GenerateServerKey(public_key, private_key);server->InitializeSecurity(public_key, private_key, false);FILE *fp = fopen("publicKey.dat","wb"); // 文件的保存路径根据自己项目需要设置fwrite(public_key,sizeof(public_key),1,fp);fclose(fp);#endif


4. Client 客户端处理程序

#if LIBCAT_SECURITY==1    #include "SecureHandshake.h"#endifint main(void){...这里省略几万行代码#if LIBCAT_SECURITY==1// 使用安全连接// 读取公钥,这个文件是由服务器生成,并且给我的char public_key[cat::EasyHandshake::PUBLIC_KEY_BYTES];FILE *fp = fopen("publicKey.dat","rb");fread(public_key,sizeof(public_key),1,fp);fclose(fp);// RakNet提供处理公钥的类库RakNet::PublicKey pk;pk.remoteServerPublicKey=public_key;pk.publicKeyMode=RakNet::PKM_USE_KNOWN_PUBLIC_KEY;// 我只需在连接服务器的时候使用见可以了,^_^   &pk就是我啦~~ bool b = client->Connect(ip, atoi(serverPort), "user_defined_string", (int) strlen("user_defined_string"), &pk)==RakNet::CONNECTION_ATTEMPT_STARTED;#else// 不使用安全连接RakNet::ConnectionAttemptResult car = client->Connect(ip, atoi(serverPort), "user_defined_string", (int) strlen("user_defined_string"));RakAssert(car==RakNet::CONNECTION_ATTEMPT_STARTED);#endif


5. 参考阅读

  • RakNet  Secure Connections http://www.jenkinssoftware.com/raknet/manual/secureconnections.html
  • 一日一点RakNet(22) http://blog.csdn.net/xiao_0429/article/details/7366115

您可以修改并重新发布本文,如果您能留下本文的参考连结,万分谢谢!
如果您对本文存在疑问,欢迎留言或者直接对本文评论,我会在看到的第一时间回复您。

原创粉丝点击