RakNet文章

转载:http://blog.csdn.net/xiao_0429/article/category/932340

介绍

安装

请参考Compiler Setup页,有什么问题在这块有解答。如果有额外的问题参考FAQ,http://www.jenkinssoftware.com,或者邮件联系我们。高级用户可以直接跳转到Code tutorial。初学者或想要多了解点RakNet的请继续阅读。

API描述

RakNet致力于网络和网络相关服务的游戏引擎。不仅包含了网络通信,也包括游戏级别复制,补丁升级,NAT穿透,和语音聊天。RakNet可以用于任何的应用,且可以与其他任何使用了RakNet的系统通信,不论它们位于同一个计算机,跨LAN,或跨Internet。尽管RakNet可以用于任何的网络应用,但是它主要致力于在线游戏,实现了网络游戏的共同功能需求;为了方便在线游戏编程提供了一些额外的功能。

网络101

游戏网络连接通常有两种类别:端到端模式和服务器/服务器模式。每一种模式以各种不同的方式和各种协议实现。然而,RakNet支持任意拓扑。

一般来讲,具有最好网络连接的最快的计算机应该充当服务器,其他的计算机作为客户端。

尽管有许多类型的编码数据包的方法,它们或者按照UDP数据包或者按照TCP数据包。TCP用于传输文件非常好,但是不太适合于游戏。使用TCP常常有延迟(导致游戏有很大延迟),并且是以流的形式到达,而不是数据包(这样你必须实现你自己的分包机制)。UDP包就比较好了,UDP包立即发送,并且是以包的形式发送,可以很容易区分数据。然而,额外的灵活性却带来了各种问题:

1. UDP包并不保证到达。你可能可以接收到所有发送的数据包,或者一个也接收不到,或发送数据包的一部分。

2. UDP数据包不保证按序到达。这在编程游戏时是很大的问题。例如你可能会在接收到一个坦克生成的消息之前,接收到一条坦克损毁的消息。

3. UDP数据包保证到达的正确性,但是并不能保证到达的数据不受黑客篡改。

4. UDP包并不需要接受连接。起初这个听起来还不错哦,但是当你意识到没有连接的保护时,游戏很容易遭到黑客时,就不会这么想了。例如,如果你有一个消息“Give such and such invulnerability”,黑客可以复制这条消息,每次在他们想要不受伤害时,可以将这条消息发送服务器。

5. UDP传输没有提供流控制或聚合,那可能过度发送复制件,不能有效数据发送。

RakNet如何帮助解决这些问题?

在最底层,RakNet’s 的端到端类,RakPeerInterface在UDP数据包之上提供了一层,透明地处理这些问题。使得编程者可以集中精力于游戏而不是通信引擎。

1. RakNet可以自动重发没有到达的数据

2. RakNet可以有效地自动排序到达的失序数据包。

3. RakNet可以保护传输的数据,如果数据遭到篡改,可以通知编程人员。

4. RakNet提供了一个快速,简单,连接层,它阻塞了未授权的传输。

5. RakNet透明地处理网络问题,例如流控制和聚合。

当然了,如果RakNet没能够很有效的处理这些问题,例如发送大量数据,使用阻塞操作上锁,或让RakNet很难利用这些优势,它也不会有如此多的应用。幸好情况不是这样的。

与其他的网络API不同:

1. RakNet在发送的数据中加入的控制数据非常少。

2. RakNet不会导致你不适用的功能的额外消耗。

3. RakNet有即时的连接与断开连接。

4. RakNet并不会假设网络是可靠的。RakNet会很好地处理连接问题,而不是仅仅阻塞,上锁或崩溃。

5. RakNet已经成功地用于很多游戏。事实证明它很好用。

6. RakNet很容易使用。

7. RakNet的文档很全面。每一个头文件有每一个类和函数的文档。也有Doxygen参考手册和HTML帮助文档。

RakNet可以为我们做哪些工作?

RakNet工作在字节流一层,带宽是很有效的,但是在你拥有较大控制权时,也要付出时间消耗的代价。RakNet提供了许多功能使得网络更加容易,包括远程调用,BitStream类,和自动对象同步。

大多数的游戏共享一组共同的功能,例如设置游戏玩家限制,密码生成,以及统计数据。RakNet博鳌扩所有这些功能,且又其他额外的功能。如果游戏需要使用RakNet,要检查RakNet还没有集成到你的游戏中。

最后,RakNet包含了一小组程序需要与你的游戏连接工作,例如主服务器或实时语音。

如下列出了一些你在RakNet之外可以做的一些工作:

1. 实现低带宽语音通信

2. 运行一个主服务器用于玩家寻找网络上的游戏。

3. 使用远程功能调用,允许你用变量参数调用其他计算机上的函数。

4. 获得统计数据,例如ping,包丢失,发送字节数,接收字节数,发送数据包,接收到的数据包数量,或其他更多的数据。

5. 每个数据包中可选的时间戳可以让你十分准确地知道一个动作是多长时间以前在另外的一个系统上执行的,尽管ping很流畅。

时间: 2024-09-30 14:58:33

RakNet文章的相关文章

JVM学习(2)——技术文章里常说的堆,栈,堆栈到底是什么,从os的角度总结--转载http://www.cnblogs.com/kubixuesheng/p/5202561.html

转载自---http://www.cnblogs.com/kubixuesheng/p/5202561.html 俗话说,自己写的代码,6个月后也是别人的代码--复习!复习!复习!涉及到的知识点总结如下: 堆栈是栈 JVM栈和本地方法栈划分 Java中的堆,栈和c/c++中的堆,栈 数据结构层面的堆,栈 os层面的堆,栈 JVM的堆,栈和os如何对应 为啥方法的调用需要栈 属于月经问题了,正好碰上有人问我这类比较基础的知识,无奈我自觉回答不是有效果,现在深入浅出的总结下: 前一篇文章总结了:JV

《深入理解Java集合框架》系列文章

Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析

对TTY的理解,这篇文章不错

原文:http://blog.chinaunix.net/uid-20543672-id-3225777.html 虽然一直做嵌入式Linux,宿主机和开发板通信天天都在用tty设备通信,但是其实自己对TTY设备及终端的概念认识几乎是0.对于Linux内核的终端.tty.控制台等概念的认识很模糊.由于在学习的时候碰到了重定向console的问题,所以借机学习下tty的知识.以下是我对tty的认识总结,信息来源于网络和内核文档.参考资料见文章末尾. tty一词源于Teletypes,或Telety

最近在开发一个文章聚合的工具

现在的RSS一个重大的问题就是内容重复,针对性不是特别的强.还有一点是无法推荐好的优质文章. 说实在的时间是个宝贵的东西,宁可花点钱读点有价值的文章,也不看一堆rss结果中找好的文章,还不一定找到,浪费时间啊. 所有我决定做一个小工具.文章聚合并去重,同时还根据友情链接挖掘好的rss源. 项目目前为止,可以提供简单的访问和更新功能,挖掘的功能还没有做.

微服务 - 文章

[微服务与容器的监控 —— 来自Adrian Cockcroft的挑战][http://www.infoq.com/cn/news/2015/07/monitoring-microservices]Adrian Cockcroft在GlueCon 2015大会上为听众列举了如何对微服务与基于容器的应用进行监控的多条规则.他还重强调了在监控cloud native并且基于容器的系统时所面临的挑战,并介绍了微服务模拟与可视化工具“Spigo” [微服务的好处][http://www.infoq.co

无限互联奖学金文章连载北京总部四十九期胡梦川 第一篇

无限互联奖学金文章连载北京总部四十九期胡梦川 第一篇: 今天是来到无限互联的第四天,严格来说已经第六天了,刚来就是开班典礼,给人一种很好的氛围.老师讲了很多关于以后学习的技巧和规定,我的第一感觉是,比备战高考还要严格,不过这才能体现一个组织的负责任.正式开讲才感觉到这个班级的大神无处不在,不努力根本赶不上,就是这个学习氛围和高强度的练习很重要.多用心你才能感觉到有些事其实很简单.关于学习时间大家基本都是一天不动的在敲代码,等于给自己一个机会吧.时间飞逝,抓住机会才重要.刚来第一周,感受最深就是好

《鸡啄米C++编程入门系列》系列技术文章整理收藏

<鸡啄米C++编程入门系列>系列技术文章整理收藏 收藏整理鸡啄米C++编程入门系列文章,供个人和网友学习C++时参考 1鸡啄米:C++编程入门系列之前言 2鸡啄米:C++编程入门系列之一(进制数) 3鸡啄米:C++编程入门系列之二(原码.反码与补码) 4鸡啄米:C++编程入门系列之三(VS2010的使用介绍) 5鸡啄米:C++编程入门系列之四(数据类型) 6鸡啄米:C++编程入门系列之五(运算符和表达式) 7鸡啄米:C++编程入门系列之六(算法的基本控制结构之选择结构) 8鸡啄米:C++编程入

文章标题

epoll极简介绍 关于epoll的详细介绍,已经有较多文章可以参考,例如这篇文章介绍就比较详细: http://blog.chinaunix.net/uid-24517549-id-4051156.html epoll编程的接口: epoll_create 创建一个epoll内核对象,返回指向该对象的fd epoll_ctl 往epoll中添加.删除.修改需要监控的套接字 epoll_wait 等待epoll中的套接字产生可读.可写.异常消息 使用epoll时有如下应该注意的地方: 确保被ep

如何编辑好看的微信文章微助点微信编辑

微助点微信编辑器,是一款"素材最多,最好用"的微信图文编辑工具,丰富素材样式任您挑选,调整颜色.排版更简单,为您提供好看.易读的文章是我们动力!下面给您具体介绍微助点微信编辑器. 1.编辑器网站框架 怎么样?看起来简单大气吧,微助点编辑器操作起来也和他的界面一样简单方便,还有更多的文本.标题.分割线.内容等素材可以供大家选择使用.再来看看其他素材的截图 更多的素材可访问微助点官方网站微助点官方网址