OBEX

OBEX(OBject EXchange 또는 IrOBEX)는 장치 간 바이너리 오브젝트 교환을 용이케 하는 통신 프로토콜이다. IrDA에 의해 관리되고 있으나 블루투스 스페셜 인터레스트 그룹과 오픈 모바일 연합의 SyncML에도 채택되고 있다. OBEX가 최초로 응용된 사례들 중에는 팜 III가 있다. PDA와 수많은 이후 세대들은 OBEX를 사용하여 명함, 데이터, 심지어는 애플리케이션의 교환도 가능케 했다.

OBEX가 원래 적외선용으로 설계되었으나 현재는 블루투스에 채택되었으며 RS-232, USB, WAP, 그리고 Livescribe 스마트펜 등의 장치들에도 채택되고 있다.

구현

javax.obex 
블루투스용 Java API의 선택적 패키지 javax.obex는 자바로 OBEX의 구현체를 제공한다.

OpenObex 
OpenObex는 OBEX의 C 언어 오픈 소스 구현체이다. IrDA, 블루투스, USB, TCP/IP를 통한 연결 기능을 제공하며 오브젝트를 만들고 수신 데이터를 관리한다. 클라이언트 애플리케이션의 예는 다음과 같다:
void callback_function(...) {
  /* process received data */
}

int main() {
  OBEX_Init(..., callback_function);
  OBEX_TransportConnect(...);

  object=OBEX_ObjectNew(...);
  OBEX_ObjectAddHeader(object, ...);
  OBEX_ObjectAddHeader(object, ...);
  OBEX_Request(..., object);
  while(...)
    OBEX_HandleInput(...)

  object=OBEX_ObjectNew(...);
  OBEX_ObjectAddHeader(object, ...);
  OBEX_Request(..., object);
  while(...)
    OBEX_HandleInput(...)

  /* ... */

  OBEX_TransportDisconnect(handle);
  OBEX_Cleanup(handle);
}

PyOBEX 및 nOBEX 
PyOBEX는 파이썬으로 OBEX의 부분 지원을 제공한다. nOBEX는 더 완전한 OBEX 지원을 제공하는 PyOBEX의 포크(fork)이며 블루투스 핸즈프리 프로파일을 지원한다.

각주

외부 링크 
OBEX specification at IrDA.org
Bluetooth profiles , including specifications for OBEX and OBEX-based protocols (GOEP, FTP, OBEX push, SYNC)
OpenOBEX an open source implementation of the OBEX protocol

블루투스