在開發通訊的軟件里,要讓通訊的兩端程序相互對話,其實就跟人與人的交流是一樣的,要使用共同語言,而不能一個人說英語,一個人說漢語。由于通訊兩端是分別在不同的程序里,那么就需要定出一套相互認同的語言—協議定義。而定義協議的辦法有很多種,比如直接寫成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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
