OBEX(Object Exchange)協(xié)議將點對點設備間的信息交互應用以面向?qū)ο蟮姆绞椒纸鉃閿?shù)據(jù)+操作,把數(shù)據(jù)柔性抽象為對象來描述,同時定義一種信息交互方式規(guī)范操作。OBEX協(xié)議的兩個關鍵部分便是定義了對象模型和會話方式,對象模型依據(jù)應用而定,定義了Header描述對象的一個方面,Header的集合便是一個完整的對象。會話采用請求-響應方式,客戶端發(fā)起請求,服務器端給與響應。下面從對象模型和會話協(xié)議上詳細解析下OBEX協(xié)議。
對象模型
對象模型是對對象本身的抽象描述,它定義了Header的概念,一個Header描述對象的一個方面。對象模型是一系列Header的集合體,依據(jù)應用而定,因為OBEX是很多應用的基礎協(xié)議,所以這里的應用包括底層信息交互操作及其之上的應用。對象模型可以認為是對象和應用之間的載體,因為它一方面描述了對象信息,另一方面又滿足具體應用的可操作性。
下面對Header舉個例子。比如文件傳輸應用,將文件抽象為對象模型時,需要的Header有文件名稱Name、文件數(shù)據(jù)長度DataLength、文件類型Type,可能還會有ApplicatiON specific Header即具體應用相關的Header,比如定義MASK選定文件數(shù)據(jù)只包含某些屬性。
Header的形式為ID+Value,ID為單字節(jié),它定義了Value類及其表示格式,Bit7和Bit6指定了Value值的格式,如ID==0x01則表示NAME,格式為兩字節(jié)長度+以0x00結尾的字符串數(shù)據(jù)的方式,當文件名為teST.txt時,Header即為01 00 0b 't' 'e' 's' 't' '.' 't' 'x' 't' 00。ID作為Value的一種描述,就像Header只是對象的一種描述一樣,這種定義方式大大擴展了OBEX的Header空間。
OBEX會話協(xié)議定義了請求-響應形式的會話式操作,定義發(fā)起請求的一端為客戶端,給與響應的為服務器端,OBEX應用便是在客戶端和服務器端的一系列請求-響應會話中完成的。OBEX以“操作符”的方式來定義請求,以“回應符”的方式定義響應。操作符包括:連接CONNECT(0x80)、斷開連接DISCONNECT(0x81)、發(fā)送PUT(0x02,0x82)、索取GET(0x03,0x83)、設置路徑SETPATH(0x85)、中止當前會話ABORT(0xff);回應符有0x90-繼續(xù)、0xA0-成功和其他表示錯誤原因的回應符。