项目对通讯要求越来越高了,为了满足新的需求开始研究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
名称 | 描述 |
DLL | Windows平台下编译Raknet为动态库 |
LibStatic | Windows平台下编译Raknet为静态库 |
JanssonStatic | JSON库 |
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_PGSQL | PostgreSQL备份游戏数据的数据库 |
RoomsPlugin | |
SteamLobby | |
Lobby3 | |
NATCompleteClient | 穿透完成客户端 |
NATCompleteServer | 穿透完成服务端 |
UDPForwarderTest | UDP代理 |
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 | 包日志 |
PHPDirectoryServer2 | PHP目录服务器,从或者到C++在网页上列举游戏列表。 |
Ping | 测试ping |
RackspaceConsole | 托管API控制台 |
ReadyEvent | 准备活动,同步系统中一组玩家都已经准备好一个共同的标识,在端到端环境同时启动游戏很有用,或在基于轮的游戏中进行轮次很有用。 |
RelayPluginTest | 中转插件测试 |
ReplicaManager3 | 复制管理, 对你自己的游戏对象和玩家提供管理以实现序列化,划定范围以及创建和销毁对象更加容易的插件 |
Router2 | 向我们没有直接连接的远程系统发送网络消息 |
RPC3 | 测试/演示如何使用rpc3插件, 使用本地参数列表调用C和C++函数,使用Boost获得更多的功能 |
RPC4 | 测试/演示如何使用rpc4插件,调用C函数,不依赖额外的系统或库 |
SendEmail | 发送email |
StatisticsHistoryTest | 统计数据 |
TeamManager | 演示一个游戏大厅,用户可以在3支球队之间切换 |
Timestamping | 时间戳 |
TwoWayAuthentication | 双向认证,不用传输密码就可以验证一个先前设置的密码。 |