在向大家详细介绍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 | 字节三以后的数据 |
操作码 | 整个通信数据包的长度 | 通讯的数据 |
【编辑推荐】