Bluetoothとバインド

Bluetoothでは、bind関数を使用してソケットにバインドします。 Bluetoothソケットをバインドするには、SOCKADDR_BTH構造体を使用してbind関数を呼び出します。 次の設定でSOCKADDR_BTH構造体を使用します。

name.addressFamily = AF_BTH;
name.btAddr = 0;
name.serviceClassId = GUID_NULL;
name.port = number of service channel, 0 or BT_PORT_ANY;

クライアントアプリケーションでは、適切なローカルエンドポイントを割り当てることができるように、ポートメンバーを0にする必要があります。 サーバーアプリケーションでは、ポートメンバーは有効なポート番号であるか、BT_PORT_ANYである必要があります。BT_PORT_ANYを使用して自動的に割り当てられたポートは、後でgetsockname関数を呼び出して照会することができます。 特定のRFCOMMポートを要求するための有効な範囲は、1から30です。 サーバーチャネルはグローバルリソースであり、任意のBluetoothデバイスでRFCOMMに使用できるサーバーチャネルは30個のみです。これは、Bluetoothアドレスファミリに属するすべてのWindowsソケットで共有する必要があります。 使用できるサーバーチャネルがない場合、または指定したサーバーチャネルが既に予約されている場合、bind呼び出しは失敗します。

バインドから正常に戻ると、ソケットが閉じられるまでサーバーチャネルが予約されます。 使用して、getsockname SDP登録のチャネル番号を取得する関数。

アプリケーションは、サーバーチャネルの自動割り当てを使用する必要があります。

bind関数は、Bluetooth SDPを使用してサーバーアプリケーションを自動的にアドバタイズしません。アプリケーションは、リモートBluetoothアプリケーションによって検出されるWSASetService関数を呼び出す必要があります。

Windows ソケット

bind