RAKNET内核 - Secure Connections 网络通讯安全连接
2013-05-28 11:24
155 查看
1. 前言
随着游戏上线运营之后,一些心怀不轨的玩家就会通过网络攻击或者窃取的方式来作弊,最常见的就我们所说的外挂。那么RakNet是如何规避这些玩家的攻击呢?RakNet使用传统的网络安全连接的方法从第一步就禁止非常规终端连接到服务器。
本文不使用理论性的对话,只使用简单的例子演示如何对RakNet的网络通讯信息进行加密。本文的基于《RAKENT创建UDP实例,RAKNET简单通讯实例》只上,建议先阅读该篇文章。
2. RakNet Secure Connections处理流程
全局定义 #define LIBCAT_SECURITY 1包含头文件 #include "SecureHandshake.h"
服务器生成公钥和私钥,并且把生成的公钥给客户端使用
客户端使用公钥连接服务器
3. Server 服务端处理程序
#if LIBCAT_SECURITY==1 #include "SecureHandshake.h" #endif int 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==1 cat::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" #endif int 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) /article/8254212.html
您可以修改并重新发布本文,如果您能留下本文的参考连结,万分谢谢!
如果您对本文存在疑问,欢迎留言或者直接对本文评论,我会在看到的第一时间回复您。
相关文章推荐
- 经调查长期 开关软件端口屏蔽开启 连接查看:网络不安全来之以下IP通讯中间商
- 在SkyEye上调试uClinux内核及与主机进行网络通讯(转)
- 网络通讯之长连接与短连接
- c#网络通信框架networkcomms内核解析之十一 TCP连接与UDP连接
- Java连接Access数据库_网络安全.doc
- c#网络通信框架networkcomms内核解析之十一 TCP连接与UDP连接
- 网络安全之常用注册表修改(不显示登录名,禁止空连接,关闭默认共享)
- Linux服务器TIME_WAIT网络连接太多,优化内核参数方法
- 网络安全,窃取通讯的工具,动态网络
- win 10 远程连接出现 "由于安全设置错误, 客户端无法连接到远程计算机. 确定你已登录到网络后.” 错误
- 网络通讯之长连接与短连接
- oracle 11g网络连接配置与系统安全
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
- SIM300模块GPRS网络连接和内部电脑通讯!
- 现代移动端网络短连接的优化手段总结:请求速度、弱网适应、安全保障
- Win7连接网络不能正常上网提示通讯端口初始化失败
- 如何构建安全的网络连接机制
- 远程网络连接(IPC)安全防范研究
- 如何保护无线网络安全连接
- Win7系统开机连接网络时上不了网提示通讯端口初始化失败