對VB.NET OBEX協(xié)議的簡單概括
在向大家詳細介紹VB.NET OBEX協(xié)議數(shù)據(jù)對象之前,首先讓大家了解下VB.NET OBEX協(xié)議,然后全面介紹VB.NET OBEX協(xié)議數(shù)據(jù)對象,這里我發(fā)表一下個人理解,和大家討論討論。詳情請看VB.NET專題。
VB.NET OBEX協(xié)議
目前的紅外線傳輸大都遵循OBEX協(xié)議,這是由微軟、蘋果、諾基亞等公司專門為紅外線傳輸而制定的一整套協(xié)議規(guī)則。最新協(xié)議版本是1.3版,在官方網(wǎng)站上下載要 20美元(有錢的可以去下,我反正是玩玩,叫我交錢是不可能的,本文中實現(xiàn)的依據(jù)是在網(wǎng)上找到的OBEX協(xié)議1.2版本的文檔)。協(xié)議文檔的第二章 OBEX Object Model是關(guān)鍵部份,實現(xiàn)文件傳輸必須對這章說明仔細研究清楚。以下先就對這章的一些關(guān)鍵點進行講解。
VB.NET OBEX協(xié)議數(shù)據(jù)對象模型
VB.NET OBEX協(xié)議使用一系列的數(shù)據(jù)包(header)來進行某種對象(通常是文件)的傳輸,其基本格式是這樣的:
- <Header ID>
- '數(shù)據(jù)包的標識
- <Header Value>
- '數(shù)據(jù)包內(nèi)的數(shù)據(jù)
其中
高倆位二進制數(shù)據(jù)
意義
00
這個數(shù)據(jù)包的
01
這個數(shù)據(jù)包的
10
11
注意:在
在應(yīng)用中,數(shù)據(jù)包可以嵌套。也就是:Header Value可以包含其它的數(shù)據(jù)包,所以長度標識非常重要,它可以幫助軟件的實現(xiàn)根據(jù)包的長度迅速分離出包內(nèi)的數(shù)據(jù)。
在本文實現(xiàn)中主要用到的數(shù)據(jù)包標識如下(其余的項請參閱詳細官方協(xié)議):
常用數(shù)據(jù)包標識列表
十六進制值 | 標識名稱 | 標識含義 |
0x01 | Name | 標記對象的名稱(通常是文件的文件名) |
0xC3 | Length | 以字節(jié)為單位計算的對象長度 |
0x44 | Time | 時間(以ISO 8601規(guī)范為標準) |
0x480x49 | BodyEnd of Body | 標識一個對象數(shù)據(jù)塊的開始標識這是對象的最后一個數(shù)據(jù)塊 |
VB.NET OBEX協(xié)議數(shù)據(jù)對象傳輸是按照服務(wù)器端/客戶端的方式進行的,每個操作均提供一個操作碼以明確操作的含義。以下給出部分數(shù)據(jù)發(fā)送所需操作碼列表:
0x80 | Connect | 標識申請開始一個對象傳輸會話,并可以在這個數(shù)據(jù)包中告知紅外接收方一些必要的兼容性信息。 |
0x81 | Disconnect | 標識對象傳輸會話結(jié)束 |
0x020x82 | PutFinal_Put | 發(fā)送對象的put動作(當(dāng)標識為0x82時說明這是最后的一個Put動作) |
0xA0 | Success | 說明接收端已成功收到put動作發(fā)送的所有數(shù)據(jù)(一般是在成功收到Final_Put標識的數(shù)據(jù)包后的反饋) |
0x90 | Continue | 說明接收端已收到put動作發(fā)送的數(shù)據(jù),因為Final_Put還沒出現(xiàn),所以要求發(fā)送端繼續(xù)發(fā)送數(shù)據(jù)。 |
發(fā)送方和接收方是的通信的基本格式如下:
字節(jié)0 | 字節(jié)1,2 | 字節(jié)三以后的數(shù)據(jù) |
操作碼 | 整個通信數(shù)據(jù)包的長度 | 通訊的數(shù)據(jù) |
【編輯推薦】