Android RakNet 系列之一 项目介绍

RakNet是一款基于UDP协议的高效C++网络库,适用于游戏及多种项目的网络通信需求。本文详细介绍RakNet的功能特性及其在Android平台的应用,涵盖高性能通信、安全传输、语音聊天等功能,并提供丰富的测试案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

项目对通讯要求越来越高了,为了满足新的需求开始研究RakNet在Android平台的应用,本篇是第一篇,熟悉RakNet的各个功能和插件。


RakNet是一个基于UDP网络传输协议的C++网络库,允许程序员在他们自己的程序中实现高效的网络传输服务。通常情况下用于游戏,但也可以用于其它项目。

RakNet致力于网络和网络相关服务的游戏引擎。不仅包含了网络通信,也包括游戏级别复制,补丁升级,NAT穿透,和语音聊天。RakNet可以用于任何的应用,且可以与其他任何使用了RakNet的系统通信,不论它们位于同一个计算机,跨LAN,或跨Internet。

特点

高性能 (每秒传输25,000条信息)

容易使用(在线用户手册,视频教程( 在线技术支持))

跨平台

安全的传输(代码中自动使用SHA1, AES128, SYN,用RSA避免传输受到攻击)

音频传输(用Speex编码解码,8位的音频只需要每秒500字节传输)

远程终端(远程功能调用,远程管理你的程序,包括程序的设置,密码的管理和日志的管理)

目录服务器(目录服务器允许服务器列举他们自己需要的客户端,并与他们连接。)

Autopatcher (补丁系统,它将限制客户端传输到服务端的文件,这样是为了避免一些不合法的用户将一些不合法的文件传输到服务端。)

对象重载系统

网络数据压缩( BitStream类允许压缩矢量,矩阵,四元数和在-1到1之间的实数。)

强健的通信层(可以保障信息按照不同的信道传输)


网络连接类别



1、端到端模式;2、服务器/服务器模式。


项目

Raknet版本已经没有更新了,本项目使用最新版RakNet 4.081。

VS如图:


Eclipse如图:



Android RakNet 项目已经上传到git,地址:https://github.com/banketree/RakNet_Android


项目描述
名称 描述
DLLWindows平台下编译Raknet为动态库
LibStaticWindows平台下编译Raknet为静态库
JanssonStaticJSON库
MiniupnpcStatic支持UPnP网络网关设备库
BurstTest测试发送突发消息发送到远程系统
CloudTest云端测试
ComprehensiveTest综合内部测试,记录崩溃或泄漏。
CrossConnectionTest交叉连接测试,如果两个实例同时互相连接的问题。
DroppedConnectionTest掉线测试
FCM2Host测试服务器最大连接后的转移
FCM2HostSimultaneous测试多个服务器同时最大连接后的转移
FCM2VerifiedJoinSimultaneous测试多个服务器同时认证
FlowControlTest测试流量自动控制
LoopbackPerformanceTest性能测试,多个实例的吞吐量性能和开销。
MessageSizeTest消息大小测试
ReliableOrderedTest测试发送大量消息,顺序的可靠性。
ReplicatedLogin重复登录的问题
ServerClientTest2测试连接采用客户/服务器的拓扑结构
TestDLL动态调用测试
ThreadTest测试多线程下的异常
IrrlichtDemo游戏演示测试
Ogre3DInterpDemo三维演示测试,使用Ogre 3D通过客户端/服务器网络显示一个爆米花的实例,使用ReplicaManager3。
AutopatcherClientGFx3自动补丁测试
AutopatcherClient补丁客户端
AutopatcherClient_SelfScaling补丁完,安全退出测试
AutopatcherClientRestarter补丁完,重启测试
AutopatcherMySQLRepository补丁服务器,采用MySQL数据库实现
AutopatcherServer_MySQL补丁服务器测试,测试它的完整性
AutopatcherPostgreSQLRepository补丁信息和异步数据库查询
AutopatcherServer_PostgreSQL补丁服务器测试,测试它的完整性
AutopatcherServer_SelfScaling负载测试
CommandConsoleClient命令控制台客户端
CommandConsoleServer命令控制台服务器
PacketConsoleLogger控制台日志
Lobby2ClientGFx3 
RoomsBrowserGFx3_RakNet 
Lobby2Client 
Lobby2Server_PGSQLPostgreSQL备份游戏数据的数据库
RoomsPlugin 
SteamLobby 
Lobby3 
NATCompleteClient穿透完成客户端
NATCompleteServer穿透完成服务端
UDPForwarderTestUDP代理
Matrices 
Demo_BspCollision 
SQLiteClientLogger数据库日志
SQLiteServerLogger数据库日志
SQLite3Plugin数据库插件, 使用SQLite穿件一个网络日志文件,基于SQLite3Plugin
RakVoice音频传输插件
RakVoiceDSound采用DSound来录制和播放声音
RakVoiceFMOD采用FMOD来录制和播放声音
BigPacketTest 大数据包测试
Chat Example Client聊天客户端/服务器
Chat Example Server聊天客户端/服务器
CloudClient云客户端
CloudServer云服务端
ComprehensivePCGame 
CrashReporter测试/演示事故报告系统
DirectoryDeltaTransfer目录列表传递,在目录之间发送变化或丢失的文件。 必要地,简单的补丁系统可以用于传输等级,皮肤等等。
Encryption加密
FileListTransfer文件传输
FullyConnectedMesh饱和连接, 使得所有的对等端自动连接到所有其他对等段的一个插件,选择最老的对等端作为主机。
LANServerDiscovery局域网服务器探索
MasterServer2 
MessageFilter消息过滤
OfflineMessagesTest离线消息测试
PacketLoggerTest包日志
PHPDirectoryServer2PHP目录服务器,从或者到C++在网页上列举游戏列表。
Ping测试ping
RackspaceConsole托管API控制台
ReadyEvent准备活动,同步系统中一组玩家都已经准备好一个共同的标识,在端到端环境同时启动游戏很有用,或在基于轮的游戏中进行轮次很有用。
RelayPluginTest中转插件测试
ReplicaManager3复制管理,   对你自己的游戏对象和玩家提供管理以实现序列化,划定范围以及创建和销毁对象更加容易的插件
Router2向我们没有直接连接的远程系统发送网络消息
RPC3测试/演示如何使用rpc3插件, 使用本地参数列表调用C和C++函数,使用Boost获得更多的功能
RPC4测试/演示如何使用rpc4插件,调用C函数,不依赖额外的系统或库
SendEmail发送email
StatisticsHistoryTest统计数据
TeamManager演示一个游戏大厅,用户可以在3支球队之间切换
Timestamping时间戳
TwoWayAuthentication双向认证,不用传输密码就可以验证一个先前设置的密码。
  



Raknet是一个基于UDP网络传输协议的C++网络库,允许程序员在他们自己的程序中实现高效的网络传输服务。通常情况下用于游戏,但也可以用于其它项目。   Radnet有以下特点:   l 高性能 在同一台计算机上,Raknet可以实现在两个程序之间每秒传输25,000条信息;   l 容易使用 Radnet有在线用户手册,视频教程。每一个函数和类都有详细的讲解,每一个功能都有自己的例程;   l 跨平台,当前Radnet支持Windows, Linux, Macs,可以建立在Visual Studio, GCC, Code: Blocks, DevCPP 和其它平台上;   l 在线技术支持 RakNet有一个活跃的论坛,邮件列表,你只要给他们发信,他们可以在几小时之内回复你。   l 安全的传输 RakNet在你的代码中自动使用SHA1, AES128, SYN,用RSA避免传输受到攻击   l 音频传输 用Speex编码解码,8位的音频只需要每秒500字节传输。   l 远程终端 用RakNet,你能远程管理你的程序,包括程序的设置,密码的管理和日志的管理。   l 目录服务器 目录服务器允许服务器列举他们自己需要的客户端,并与他们连接。   l Autopatcher Autopatcher系统将限制客户端传输到服务端的文件,这样是为了避免一些不合法的用户将一些不合法的文件传输到服务端。   l 对象重载系统   l 网络数据压缩 BitStream类允许压缩矢量,矩阵,四元数和在-1到1之间的实数。   l 远程功能调用   l 强健的通信层 可以保障信息按照不同的信道传输   RakNet支持两种版权,如果你是做免费游戏,RakNet将是免费的。相反,你必须支付一定的费用。   从这里你可以下载到最新的RakNet:   http://www.rakkarsoft.com/raknet/downloads/RakNet.zip   例子:   #include   #include   #include   #include "RakClientInterface.h" //建立客服端所需要的信息,其中包括客服端的建立,连接和数据的发送和接收   #include "RakNetworkFactory.h" //用于管理我们在程序中使用的类,包括类内存分配和类内存的释放   #include "RakServerInterface.h" //用于建立服务器所需用的信息,包括服务器的建立,连接和数据的发送和接收   #include "PacketEnumerations.h" //用于处理网络引擎在运行过程中得到的信息   Packet *packet;//网络传输中用于存储数据的一个数据结构   /////////////////////////////////////////////////////   /*   Struct Packet   {   PlayerID playerId; //表明了包的出处。每一个连接服务器的客户端都将被分配一个唯一的ID号,用于标识自己。   Unsigned long length; //数据长度   Unsigned long bitsize; //比特大小   Char *data; //包中的数据   }   */   /////////////////////////////////////////////////////   int main(void)   {   char str[512];   RakClientInterface *rakClientInterface;   RakServerInterface *rakServerInterface;   printf("(C)客服端 (S)服务器?\n");   gets(str);   if (str[0]=='c')   {   rakClientInterface=RakNetworkFactory::GetRakClientInterface();//初始化一个客户端实例,为它分配内存   rakServerInterface=0;   printf("客服端已经建立。");   }   else   {   rakClientInterface=0;   rakServerInterface=RakNetworkFactory::GetRakServerInterface();//初始化一个服务器实例,为它分配内存   printf("服务器已经建立。");   }   if (rakServerInterface)   {  
RakNet是一个基于UDP网络传输协议的C++网络库,允许程序员在他们自己的程序中实现高效的网络传输服务。通常情况下用于游戏,但也可以用于其它项目RakNet有以下特点: l 高性能 在同一台计算机上,RakNet可以实现在两个程序之间每秒传输25,000条信息; l 容易使用 RakNet有在线用户手册,视频教程。每一个函数和类都有详细的讲解,每一个功能都有自己的例程; l 跨平台,当前RakNet支持Windows, Linux, Macs,可以建立在Visual Studio, GCC, Code: Blocks, DevCPP 和其它平台上; l 在线技术支持 RakNet有一个活跃的论坛,邮件列表,你只要给他们发信,他们可以在几小时之内回复你。 l 安全的传输 RakNet在你的代码中自动使用SHA1, AES128, SYN,用RSA避免传输受到攻击 l 音频传输 用Speex编码解码,8位的音频只需要每秒500字节传输。 l 远程终端 用RakNet,你能远程管理你的程序,包括程序的设置,密码的管理和日志的管理。 l 目录服务器 目录服务器允许服务器列举他们自己需要的客户端,并与他们连接。 l Autopatcher Autopatcher系统将限制客户端传输到服务端的文件,这样是为了避免一些不合法的用户将一些不合法的文件传输到服务端。 l 对象重载系统 l 网络数据压缩 BitStream类允许压缩矢量,矩阵,四元数和在-1到1之间的实数。 l 远程功能调用 l 强健的通信层 可以保障信息按照不同的信道传输 RakNet支持两种版权,如果你是做免费游戏,RakNet将是免费的。相反,你必须支付一定的费用。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值