第二人生的源码分析(三十四)读取通讯的消息模板

系统 1819 0
在开发通讯的软件里,要让通讯的两端程序相互对话,其实就跟人与人的交流是一样的,要使用共同语言,而不能一个人说英语,一个人说汉语。由于通讯两端是分别在不同的程序里,那么就需要定出一套相互认同的语言—协议定义。而定义协议的办法有很多种,比如直接写成C结构,这样的方式最直接了,但它有点不灵活。又有采用XML的方式,这样虽然灵活了,但它的通讯消息大小又太大了,不便于传送,对于中国慢慢网络来说,又太不现实。像QQ那么短的消息结构,发送的速度那么快才是真正地适应中国的国情,而不像MSN那么慢,那么费带宽,可以从这点来说MSN比QQ就差了十万八千里。因此,一个协议的好与坏,影响到通讯的根本性能,就影响到用户的使用感受,这也是我至今不太喜欢使用MSN的原因,也怪不了广东省委书记都喜欢使用QQ了( 汪洋在腾讯公司总部接受了腾讯 CEO 马化腾赠送的 QQ 号码。消息传开后,有网友戏称为“ QQ 广东第一号”,更多网友纷纷表示“欢迎新 Q 友”。 )。而第二人生使用的协议,比较高明,使用可定制的消息格式,直接使用二进制的方式。下面先来看看定义消息的文件message_template.msg:
// Linden Lab development message templates
 
version 2.0
 
// The Version 2.0 template requires preservation of message
// numbers. Each message must be numbered relative to the
// other messages of that type. The current highest number
// for each type is listed below:
// Low: 423
// Medium: 18
// High: 29
// PLEASE UPDATE THIS WHEN YOU ADD A NEW MESSAGE!
 
 
// *************************************************************************
// Test Message
// *************************************************************************
 
// Test Message
 
{
 TestMessage Low 1 NotTrusted Zerocoded
 {
         TestBlock1           Single
         {      Test1            U32 }
 }
 {
         NeighborBlock            Multiple         4
         {      Test0            U32 }
         {      Test1            U32 }
         {      Test2            U32 }
 }
}
 
从文件里看到第一行,就是消息的版本。接着看到Test Message的结构,它有一个大括号定义的消息结构。TestMessage是消息的名称,Low是这个消息使用频率程度,NotTrusted是这个消息是需要可靠性传送,Zerocoded是这个消息的编码方式。TestBlock1是消息块名称,Single是单一块的。Test1是发送的内容,32位大小。
NeighborBlock是第二块数据名称,多个定义,共有4块(Test0,Test1,Test2)。
 
通过这样的消息结构定义,就可以创建相应的协议结构,并且很灵活,添加协议也很方便,实在是太棒的协议定义了。
 

第二人生的源码分析(三十四)读取通讯的消息模板


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论