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