stringtranslate.com

ОБМЕН ОБЪЕКТАМИ

OBEX (аббревиатура OBject EXchange , также называемая IrOBEX ) — это протокол связи , который облегчает обмен двоичными объектами между устройствами. Он поддерживается Ассоциацией инфракрасных данных , но также был принят Специальной группой по Bluetooth и крылом SyncML Открытого мобильного альянса (OMA). Одно из первых популярных приложений OBEX было в Palm III . Этот КПК и его многочисленные преемники используют OBEX для обмена визитными карточками, данными и даже приложениями.

Хотя OBEX изначально был разработан для инфракрасного порта, теперь он адаптирован для Bluetooth , а также используется через RS-232 , USB , WAP и в таких устройствах, как смарт-ручки Livescribe .

Сравнение с HTTP

OBEX по конструкции и функциям аналогичен HTTP: он предоставляет клиенту надежный транспорт для подключения к серверу, а затем может запрашивать или предоставлять объекты. Но OBEX отличается во многих важных отношениях:

Объекты

OBEX работает путем обмена объектами , которые используются для различных целей: установления параметров соединения, отправки и запроса данных, изменения текущего пути или атрибутов файла.

Объекты — это поля и заголовки . В качестве примера можно привести следующий объект, используемый для запроса телефонной книги с мобильного телефона:

Этот объект содержит два поля (команда и длина) и два заголовка. Первое поле (команда) указывает, что это запрос данных (GET). Второе поле — это общий размер объекта, включая два поля.

Этот объект также содержит два заголовка, а именно «Идентификатор соединения» и «Имя». Первый байт каждого заголовка — это имя заголовка и тип его содержимого. В этом случае:

Возможный ответ, содержащий запрошенные данные, может быть:

В этом примере предполагается, что телефонная книга достаточно коротка, чтобы ее можно было разместить в одном объекте ответа. Единственный заголовок имеет идентификатор 0x49, что означает, что это «Конец тела», последний фрагмент информации (в данном случае также единственный). Первые два бита 0x49 равны 01, что означает, что содержимое этого заголовка представляет собой данные с префиксом длины: два следующих байта 0x00 и 0x2F сообщают длину этих данных (в десятичном формате 47), последующие - это данные, в этом случай, когда телефонная книга содержит только пустую визитную карточку размером 47 байт.

В этом примере показана одна команда GET и ее ответ, причем единственными заголовками, которые используются, являются идентификатор соединения, имя и конец тела. Перед его выдачей должна была быть отправлена ​​команда CONNECT для установления некоторых параметров соединения, включая идентификатор соединения. Другие команды: put, setpath, action, Abort, Disconnect. Некоторые другие примечательные заголовки включают: тип, время, описание, цель.

Сессия

После того, как клиент (например, компьютер) подключается к серверу (например, мобильному телефону), типичный сеанс состоит в том, что клиент отправляет несколько объектов и получает на них ответы от сервера. В качестве примера:

Обмен может существенно отличаться в зависимости от сервиса. Например, SyncML не использует SETPATH, а передача OBEX состоит из просто CONNECT (без заголовка TARGET), PUT и необязательного DISCONNECT.

Протоколы

Следующие протоколы работают через OBEX или имеют для этого привязки:

ОБЕКС Пуш
Передает файл от отправителя запроса получателю; отправляется объект CONNECTION, не содержащий цели, затем используется PUT для передачи файла
Протокол передачи файлов OBEX
Сохраняет и извлекает файлы аналогично FTP . Целевой заголовок объекта CONNECTION: {0xF9, 0xEC, 0x7B, 0xC4, 0x95, 0x3C, 0x11, 0xD2, 0x98, 0x4E, 0x52, 0x54, 0x00, 0xDC, 0x9E, 0x09}; ответ содержит идентификатор соединения, который будет использоваться в последующих объектах GET, PUT, SETPATH ​​и ACTION.
Доступ к телефонной книге
Аналогично передаче файлов, но использует цель {0x79, 0x61, 0x35, 0xF0, 0xF0, 0xC5, 0x11, 0xD8, 0x09, 0x66, 0x08, 0x00, 0x20, 0x0C, 0x9A, 0x66}; записи телефонной книги могут быть перечислены (с различными возможными порядками и фильтрами) и извлечены из определенных каталогов в разделе telecom/ с помощью GET и SETPATH.
ИрМЦ
IrMC был разработан для обмена записями телефонной книги, календаря, цифровыми визитными карточками и списками дел . В форме без установления соединения для передачи данных используется один PUT; в противном случае различные файлы и папки в telecom/ могут быть извлечены или переданы; целевой заголовок {'I', 'R', 'M', 'C', '-', 'S', 'Y', 'N', 'C'} может использоваться в запросах GET для различения типа использовано индексации
СинкМЛ
SyncML может синхронизировать телефонные книги, календари, заметки и другие данные. В привязке OBEX целью объекта CONNECT является {'S', 'Y', 'N', 'C', 'M', 'L', '-', 'S', 'Y', ' Н', 'С'}; тогда сеанс состоит из последовательности пар PUT-GET, в которых по очереди отправляются и принимаются безымянные файлы XML или WBXML .

Реализации

javax.obex

Дополнительный пакет javax.obex в API Java для Bluetooth обеспечивает реализацию OBEX в Java . [2]

ОпенОбекс

OpenObex — это реализация OBEX с открытым исходным кодом на C. Он предоставляет функции для подключения через IrDA , Bluetooth , USB и TCP/IP , построения объектов и обработки полученных данных. Пример схемы клиентского приложения:

void callback_function (...) { /* обработка полученных данных */ }   int main () { OBEX_Init (..., функция обратного вызова ); OBEX_TransportConnect (...);      объект = OBEX_ObjectNew (...); OBEX_ObjectAddHeader ( объект , ...); OBEX_ObjectAddHeader ( объект , ...); OBEX_Request (..., объект ); в то время как (...) OBEX_HandleInput (...)            объект = OBEX_ObjectNew (...); OBEX_ObjectAddHeader ( объект , ...); OBEX_Request (..., объект ); в то время как (...) OBEX_HandleInput (...)          /* ... */ OBEX_TransportDisconnect ( дескриптор ); OBEX_Cleanup ( дескриптор ); } 

Объекты отправляются через OBEX_Request. После вызова OBEX_HandleInputполученные данные обрабатываются в функции обратного вызова (которая была указана при вызове OBEX_Init). Функция обратного вызова может определить, был ли получен ответ полностью и, следовательно, может ли основная программа выйти из whileвыполняемого цикла.

ПиОБЕКС и ноБЕКС

PyOBEX обеспечивает частичную поддержку OBEX в Python . [3] nOBEX — это ответвление PyOBEX с более полной поддержкой OBEX и поддержкой профиля Bluetooth Hands Free для облегчения тестирования OBEX в автомобильных информационно-развлекательных системах. [4]

Профили

OBEX является основой для многих «профилей» более высокого уровня:

Поддерживаемые устройства

Смотрите также

Рекомендации

  1. ^ «Введение и обзор», «Лидерство в образовании » , Cambridge University Press, стр. 1–5, 22 января 2007 г., doi : 10.1017/cbo9781139168564.001, ISBN 978-0-521-68512-2, получено 16 февраля 2024 г.
  2. ^ API javax.obex
  3. ^ ПиОБЕКС
  4. ^ ноОБЕКС

Внешние ссылки