VÝMĚNA OBJEKTŮ - OBject EXchange
![]() | tento článek potřebuje další citace pro ověření.Září 2014) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
OBEX (zkratka VÝMĚNA OBJEKTŮ, také nazývané IrOBEX) je komunikační protokol, který usnadňuje výměnu binárních objektů mezi zařízeními. Je udržován Sdružení infračervených dat ale byl rovněž přijat Bluetooth Speciální zájmová skupina a SyncML křídlo Otevřete mobilní alianci (OMA). Jedna z prvních populárních aplikací OBEX byla v Palm III. Tento PDA a jeho mnoho nástupců používá OBEX k výměně vizitek, dat a dokonce i aplikací.
Ačkoli byl OBEX původně navržen pro infračervené záření, nyní jej přijal Bluetooth, a je také používán opakovaně RS-232, USB, WAP a v zařízeních, jako je Livescribe inteligentní pera.
Srovnání s HTTP
OBEX je podobný z hlediska designu a funkce HTTP při poskytování klientovi spolehlivý přenos pro připojení k serveru a poté může požadovat nebo poskytovat objekty. Ale OBEX se liší v mnoha důležitých ohledech:
- HTTP je obvykle navrstvený nad a TCP / IP odkaz. OBEX může také být, ale běžně se implementuje na IrLAP /IrLMP /Drobný TP stoh na IrDA přístroj. v Bluetooth, OBEX je implementován na a Základní pásmo /ACL /L2CAP (a pro starší použití RFCOMM ) zásobník. Jsou možná další taková „vazba“ OBEX, například přes USB.
- HTTP používá text čitelný člověkem, ale OBEX používá binární formát typ-délka-hodnota trojčata s názvem „Záhlaví“ pro výměnu informací o požadavku nebo objektu. Ty je mnohem snazší analyzovat pomocí zařízení s omezeným zdrojem.
- Transakce HTTP jsou ze své podstaty bez státní příslušnosti; klient HTTP obvykle otevře připojení, odešle jeden požadavek, obdrží odpověď a buď uzavře připojení, nebo dává další nesouvisející požadavky. V OBEXu může jediné dopravní spojení nést mnoho souvisejících operací. Ve skutečnosti nedávné dodatky ke specifikaci OBEX umožňují obnovení náhle uzavřené transakce s neporušenými všemi informacemi o stavu.
Objekty
OBEX funguje výměnou předměty, které se používají pro různé účely: stanovení parametrů připojení, odesílání a vyžádání dat, změna aktuální cesty nebo atributů souboru.
Objekty jsou pole a záhlaví. Jako příklad může být následující objekt použitý pro vyžádání telefonního seznamu z mobilního telefonu:
Objekt | Pole | Příkaz | ZÍSKAT, finále | 0x83 |
---|---|---|---|---|
Délka | celková délka objektu | 0x00 0x29 | ||
Záhlaví | ID připojení | 1 | 0xCB 0x00 0x00 0x00 0x01 | |
název | „telecom / pb.vcf“ | 0x01 0x00 0x1e 0x00 0x74 0x00 0x65 0x00 0x6c 0x00 0x65 0x00 0x63 0x00 0x6f 0x00 0x6d 0x00 0x2f 0x00 0x70 0x00 0x62 0x00 0x2e 0x00 0x76 0x00 0x63 0x00 0x66 0x00 0x00 |
Tento objekt obsahuje dvě pole (příkaz a délku) a dvě záhlaví. První pole (příkaz) určuje, že jde o požadavek na data (GET). Druhé pole je celková velikost objektu, včetně dvou polí.
Tento objekt také obsahuje dvě záhlaví, konkrétně „ID připojení“ a „Název“. První bajt každé záhlaví je název záhlaví a jeho typ obsahu. V tomto případě:
- 0xCB znamená, že tato hlavička je „ID připojení“, číslo získané dříve; dva bity nejvyššího řádu 0xCB jsou 11 a tato dvojice určuje, že je to jako 4bajtová veličina;
- první bajt druhé hlavičky je 0x01; tento bajt identifikuje tuto hlavičku jako „Jméno“; první dva bity 0x01 jsou 00, což znamená, že obsah této hlavičky je řetězec Unicode zakončený nulou (v UCS-2 form) s předponou počtu bytů, ze kterých je vytvořen (0x00 0x1e).
Možná odpověď obsahující požadovaná data může být:
Odezva | Pole | Kód odpovědi | Dobře, konečné | 0xA0 |
---|---|---|---|---|
Délka | celková délka objektu | 0x00 0x35 | ||
Záhlaví | Konec těla | „ZAČÁTEK: VCARD ...“ | 0x49 0x00 0x2F 0x42 0x45 0x47 0x49 0x4e 0x3a 0x56 0x43 0x41 0x52 0x44 |
V tomto příkladu se telefonní seznam předpokládá dostatečně krátký na to, aby byl obsažen v jediném objektu odpovědi. Jediná hlavička má jako identifikátor 0x49, což znamená, že se jedná o „konec těla“, poslední část informací (v tomto případě také jedinou). První dva bity 0x49 jsou 01, což znamená, že obsah této hlavičky jsou data s předponou délky: dva další bajty 0x00 0x2F říká délku těchto dat (v desítkové soustavě, 47), následující jsou data, v tomto v případě telefonního seznamu obsahujícího pouze prázdný vCard 47 bajtů.
Tento příklad ukazuje jediný příkaz GET a jeho odpověď, přičemž hlavičkami jsou pouze ID připojení, název a konec těla. Před jeho vydáním by měl být odeslán příkaz CONNECT pro vytvoření některých parametrů připojení, včetně ID připojení. Další příkazy jsou: put, setpath, action, abort, odpojit. Některé další pozoruhodné záhlaví zahrnují: typ, čas, popis, cíl.
Zasedání
Poté, co se klient (např. Počítač) připojí k serveru (např. Mobil), typická relace spočívá v tom, že klient odešle několik objektů a získá jejich odpovědi ze serveru. Jako příklad:
- PŘIPOJIT: jedno z polí určuje největší velikost paketů, které může klient přijmout; záhlaví TARGET určuje druh služby, kterou klient očekává (procházení souborů, synchronizace-ml, přístup k telefonnímu seznamu); odpověď serveru s maximální délkou paketu, ID připojení a dalšími údaji
- ZÍSKAT: klient požaduje soubor s uvedením ID připojení, názvu souboru a / nebo jeho typu; odpověď serveru s obsahem souboru nebo jen s jeho částí; v druhém případě musí klient poslat další objekty GET, aby získal zbytek souboru
- SETPATH: klient řekne serveru, aby přepnul do jiné složky se soubory, přičemž ve dvou hlavičkách uvede ID připojení a název složky
- ZÍSKAT: klient požaduje výpis obsahu složky odesláním objektu s ID připojení a příslušnou hlavičkou TYPE (např. „X-obex / folder-listing“ pro přenos souborů, „x-bt / vcard-listing“ pro přístup do telefonního seznamu)
- PUT: klient odešle soubor na server; pokud je příliš velká na to, aby se vešla do jednoho paketu, server si vyžádá další část s odpovědí POKRAČOVAT
- DISCONNECT: klient informuje server, který uzavírá relaci
Výměna se může výrazně lišit v závislosti na službě. Například, SyncML nepoužívá SETPATH, zatímco OBEX tlačit je vyroben pouze z CONNECT (bez záhlaví TARGET), PUT a volitelného DISCONNECT.
Protokoly
Následující protokoly běží přes OBEX nebo k tomu mají vazby:
- OBEX Push
- Přenese soubor od původce požadavku příjemci; je odeslán objekt CONNECTION, který neobsahuje žádný cíl, pak se k přenosu souboru použije PUT
- Protokol pro přenos souborů OBEX
- Ukládá a načítá soubory podobně jako FTP. Cílová hlavička objektu CONNECTION je {0xF9, 0xEC, 0x7B, 0xC4, 0x95, 0x3C, 0x11, 0xD2, 0x98, 0x4E, 0x52, 0x54, 0x00, 0xDC, 0x9E, 0x09}; odpověď obsahuje ID připojení, které se použije v následném objektu GET, PUT, SETPATH a ACTION.
- Přístup do telefonního seznamu
- Podobně jako přenos souborů, ale používá cíl {0x79, 0x61, 0x35, 0xF0, 0xF0, 0xC5, 0x11, 0xD8, 0x09, 0x66, 0x08, 0x00, 0x20, 0x0C, 0x9A, 0x66}; položky telefonního seznamu mohou být uvedeny (s různými možnými objednávkami a filtry) a načteny z určitých adresářů pod telekomunikací / pomocí GET a SETPATH
- IrMC
- IrMC byl navržen pro výměnu položek telefonního seznamu, položek kalendáře, digitálních vizitek a seznamy úkolů. Ve formě bez připojení se k přenosu dat používá jediný PUT; jinak lze načíst nebo odeslat různé soubory a složky v rámci telekomunikací /; v požadavcích GET může být použito cílové záhlaví {'I', 'R', 'M', 'C', '-', 'S', 'Y', 'N', 'C'} pro rozlišení druhu použitého indexování
- SyncML
- SyncML může synchronizovat telefonní seznamy, kalendáře, poznámky a další data. Ve vazbě OBEX je cílem objektu CONNECT {'S', 'Y', 'N', 'C', 'M', 'L', '-', 'S', 'Y', ' N ',' C '}; relace pak spočívá v posloupnosti párů PUT-GET, kde jsou bezejmenné XML nebo WBXML soubory jsou zasílány a přijímány.
Implementace
javax.obex
Volitelný balíček javax.obex v Java API pro Bluetooth poskytuje implementaci OBEX v Jáva.[1]
OpenObex
OpenObex je open-source implementace OBEX v C. Poskytuje funkce pro připojení IrDA, Bluetooth, USB a TCP / IP, stavební objekty a nakládání s přijatými daty. Příklad schématu klientské aplikace je:
prázdnota callback_function(...) { / * zpracovat přijatá data * /}int hlavní() { OBEX_Init(..., callback_function); OBEX_TransportConnect(...); objekt = OBEX_ObjectNový(...); OBEX_ObjectAddHeader(objekt, ...); OBEX_ObjectAddHeader(objekt, ...); OBEX_Request(..., objekt); zatímco (...) OBEX_HandleInput(...) objekt = OBEX_ObjectNový(...); OBEX_ObjectAddHeader(objekt, ...); OBEX_Request(..., objekt); zatímco (...) OBEX_HandleInput(...) /* ... */ OBEX_Transport Odpojit(Rukojeť); OBEX_Cleanup(Rukojeť);}
Objekty jsou odesílány uživatelem OBEX_Request
. Po zavolání OBEX_HandleInput
, přijatá data jsou zpracována ve funkci zpětného volání (která byla zadána při volání OBEX_Init
). Funkce zpětného volání může určit, zda byla odpověď zcela přijata, a tedy zda může hlavní program opustit zatímco
smyčka, kterou provádí.
PyOBEX a nOBEX
PyOBEX poskytuje částečnou podporu pro OBEX v Krajta.[2] nOBEX je vidlice PyOBEX s úplnější podporou OBEX a podporou Bluetooth Hands free profil usnadnit testování OBEX na informačních a zábavních systémech pro automobily.[3]
Profily
OBEX je základem pro mnoho „vrstev“ vyšších vrstev:
Klasifikace | Profil |
---|---|
IrDA | Namiřte a vystřelte profil |
Infračervené finanční zprávy (IrFM) profil | |
Bluetooth SIG | Obecný profil výměny objektů |
Profil push objektu (přenosy z telefonu na telefon) | |
Profil přenosu souborů (přenosy z telefonu na PC) | |
Synchronizační profil | |
Základní zobrazovací profil | |
Základní profil tisku | |
OMA | SyncML vazba |
Podporovaná zařízení
- Všechno Dlaně od té doby Palm III kromě Palm Pre, Palm Pre Plus, Palm Pixi a Palm Pixi Plus.
- Většina Ostrý, Motorola, Samsung, Sony Ericsson, HTC a Nokia telefony s infračervený nebo Bluetooth přístav
- LG EnV Touch (VX11000)
- Mnoho dalších PDA od roku 2003
- Mnoho dalších telefonů s infračervený nebo Bluetooth přístav
- Zařízení Android ve verzi 2.1 a vyšší
- Zařízení Windows Phone 7.8 a 8 (omezeno na přenos obrázků, hudby a videa prostřednictvím aplikace „Bluetooth Share“).
Viz také
Reference
externí odkazy
- Specifikace OBEX na IrDA.org
- Profily Bluetooth, včetně specifikací pro OBEX a protokoly založené na OBEX (GOEP, FTP, OBEX push, SYNC)
- OpenOBEX open source implementace protokolu OBEX