(abbreviation of OBject EXchange
, also termed IrOBEX
) is a communications protocol that facilitates the exchange of binary objects between devices. It is maintained by the Infrared Data Association
but has also been adopted by the Bluetooth Special Interest Group
and the SyncML
wing of the Open Mobile Alliance
(OMA). One of OBEX's earliest popular applications was in the Palm III personal digital assistant
. This PDA and its many successors use OBEX to exchange business cards, data, even applications.
Differences between OBEX and HTTP
OBEX is similar in design and function to [
] in that a client uses a reliable transport to connect to a server and may then request or provide objects. But OBEX differs in many important respects:
- Transports. HTTP is normally layered above a TCP/IP link. OBEX is commonly implemented on an IrLAP/IrLMP/Tiny TP stack on an IrDA device. In Bluetooth, OBEX is implemented on a Baseband/Link Manager/L2CAP/RFCOMM stack. Other such "bindings" of OBEX are possible.
- Binary transmissions. HTTP uses human-readable text, but OBEX uses binary-formatted type-length-value triplets called "Headers" to exchange information about a request or an object. These are much easier to parse by devices with limited resources.
- Session support. HTTP transactions are inherently stateless; generally a HTTP client opens a connection, makes a single request, receives its response, and closes the connection. In OBEX, a single transport connection may bear many related operations. In fact, recent additions to the OBEX specification allow an abruptly closed transaction to be resumed with all state information intact.
OBEX is the foundation for many higher-layer "profiles":
- In the IrDA:
- In the Bluetooth SIG:
- Generic Object Exchange Profile
- Object Push Profile (phone to phone transfers)
- File Transfer Profile (phone to PC transfers)
- Synchronization Profile
- Basic Imaging Profile
- Basic Printing Profile
- In the OMA: