一日一点RakNet(26)--Preprocessor Directives

翻译 2012年03月27日 18:34:15

预处理指令

 

      RakNetDefinesOverrides.h文件中定义了下面这些值。在RakNetDefines.h中这些都是作为默认设置。在NativeFeatureIncludes.h文件中,不要编译那些你用不到的功能。

 

// 定义 __GET_TIME_64BIT 变量使得RakNet::TimeMS使用64位保存数据,而不是32位值。

// 32位值在使用了5周之后会发生溢出错误。但是,使用64位值会使得发送时间所使用的带宽加倍

// 因此不要轻易使用这个值,除非你有充分的原因。如果使用的是iPod Touch TG,注释掉这个定义。

// 更多内容参考http://www.jenkinssoftware.com/forum/index.php?topic=2717.0
//
这个值的定义在所有的系统上必须相同,否则无法实现连接通信。

#define __GET_TIME_64BIT 1

// 如果想要剥去文件和LINE信息对于EXE 的内存追踪,定义 _FILE_AND_LINE_ 0

#define _FILE_AND_LINE_ __FILE__,__LINE__

// BitStream中不支持字节序交换定义 __BITSTREAM_NATIVE_END值,

// 如果要使系统加速,则定义这个值。

// 除非你想要不同的字节序系统进行相互连接时才将这个值设置为可用。默认设置不可用

// #define __BITSTREAM_NATIVE_END

// 使用new delete之前用于_alloca的最大栈值。

#define MAX_ALLOCA_STACK_ALLOCATION 1048576

// 使用WaitForSingleObject函数代替sleep函数

// 定义这个值,可以使得系统表现更好,CPU使用率较小,但是RakNet 的性能较差

// 如果注释掉这个定义,CPU使用时间增加,但是RakNet响应更快,更加及时。

#define USE_WAIT_FOR_MULTIPLE_EVENTS

// 取消注释,使用RakMemoryOverride用于用户内存追踪,参考RakMemoryOverride.h了解更多信息。

#define _USE_RAK_MEMORY_OVERRIDE 0

// 如果定义了,OpenSSL可以用于TCPInterface类。要使用SendEmail类必须设置这个定义。注意OpenSSL带有自己的授权限制,这点需要注意。

// 如果你不同意使用OpenSSL的授权限制,则不要定义这个值。使用的话需要将头文件搜索路径设置加上DependentExtensions\openssl-0.9.8g

#define OPEN_SSL_CLIENT_SUPPORT 0

// 执行malloc/free的门限值,而不是将数据压进bitstream类的固定栈中。

// 任意的大小,仅仅拿出一些比大多数包都大的

#define BITSTREAM_STACK_ALLOCATION_SIZE 256

// 如果你不想用,或修改调试用的输出方法,可以定义RAKNET_DEBUG_PRINTF

#define RAKNET_DEBUG_PRINTF printf

// 支持的最大本地IP地址数

#define MAXIMUM_NUMBER_OF_INTERNAL_IDS 10

// 这个定义控制用于每一个连接的最大内存数。如果比这个值更大,许多数据包将被发送,但是不会有确认,那么确认就没有了作用

#define DATAGRAM_MESSAGE_ID_ARRAY_LENGTH 512

// 这个值定义了可靠用户消息的最大数,这个最大数是某一时刻可以在线上传输的可靠用户消息的最大数

#define RESEND_BUFFER_ARRAY_LENGTH 512
#define RESEND_BUFFER_ARRAY_MASK 511

// 如果你想要使用RakMemoryOverride链接到DLMalloc 则需要定义下面的这个值

// #define _LINK_DL_MALLOC

// 其他的变通方案参考http://support.microsoft.com/kb/274323
//
如果在RakNet::GetTime()之间发生两次调用,这个delta会被返回

// 注意:如果你设置一个断点暂停RakPeerUpdateNetworkLoop()线程

// 这会导致ID_TIMESTAMP 暂时变得不十分准确。

// 这个值定义在RakNetDefinesOverrides.h文件中,使得它可用定义为非零,这个功能不可用则定义为0。

#define GET_TIME_SPIKE_LIMIT 0

// 使用滑动窗口代替基于拥塞控制ping
#define USE_SLIDING_WINDOW_CONGESTION_CONTROL 1

// 当一个大的消息到达时,为整个块预分配内存。

// 对于大消息,这种机制不需要重组数据报,浪费时间,但是很容易受到攻击者攻击,造成主机耗尽内存。

#define PREALLOCATE_LARGE_MESSAGES 0

 

By 北洋小郭

转载请注明出处,切勿用于商业。谢谢!

一日一点RakNet(16)--BitStream

BitStream概述          BitStream类是在RakNet命名空间下的一个辅助类,用一个封装的动态数组来打包和解包bits。它具有如下的四个优势:        1. 动态创...

一日一点RakNet(44)--NAT Type detection

NAT类型检测   要完成NAT穿透需要提前确定NAT类型        NAT穿透的成功几率依赖于NAT使用的算法类型。          Full cone NAT:可以从先前使用过...

一日一点RakNet(33)--Cloud Computing

云计算概览   通过服务器云可访问的客户端内存/事件          有时想要大量的没有相互连接的客户端在相互不知道对方存在前提下共享内存或得到事件的通知。例如:        1. 高性...

一日一点RakNet(55)--Crash Reporter(崩溃报告器)

崩溃报告器概览   Minidumps使得崩溃报告功能容易实现        CrashReporter可以在RakNet/Samples/CrashReporter中找到,仅仅可以用于Wind...

一日一点RakNet(25)--NAT traversal architecture

NAT穿透的结构   结合如何使用UPNP,NAT类型检测,NAT穿透,以及Router2,使得P2P连接迅速而有效完成。        RakNet 使用了4个独立的系统,每一个系统都解决...

一日一点RakNet(36)--FileListTransfer

FileListTransfer概览   接收发送文件更加容易           FileListTransfer插件用于发送可以读取进FileList类的文件列表。它与DirectoryD...

一日一点RakNet(24)--Rackspace Interface

Rakspace 云服务器API的C++接口   用编程的方式管理应用服务器        Rakspace提供了基于API的HTTPS,具体的API信息可以在连接中找到(http://docs...

一日一点RakNet(20)--NetworkIDObject

网络ID对象   NetworkIDObject 和NetworkIDManager类允许使用普通的ID查询指针          NetworkIDOjbect类是一个可选类,可以将自己的类...

一日一点RakNet(47)--RakVoice

RakVoice   实时语音通信        RakVoice是RakNet的一个特色,这个插件可以实现实时语音通信,在8000 16 bit per sec的采样标准下,通信代价仅仅是每秒...

一日一点RakNet(3)--介绍

介绍   安装        请参考Compiler Setup页,有什么问题在这块有解答。如果有额外的问题参考FAQ,http://www.jenkinssoftware.com,或者邮件联系...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一日一点RakNet(26)--Preprocessor Directives
举报原因:
原因补充:

(最多只允许输入30个字)