Bluetoothとバインド
Bluetoothでは、バインド 関数を使用してソケットにバインドします。 Bluetoothソケットをバインドするには、SOCKADDR_BTH 構造体を使用して バインド 関数を呼び出します。 次の設定で 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 ソケットで共有する必要があります。 使用可能なサーバー チャネルがない場合、または指定されたサーバー チャネルが既に予約されている場合、バインド 呼び出しは失敗します。
バインドから正常に戻ると、サーバー チャネルはソケットが閉じられるまで予約されます。 getsockname 関数を使用して、SDP 登録のチャネル番号を取得します。
アプリケーションでは、サーバー チャネルの自動割り当てを使用する必要があります。
バインド 関数は、Bluetooth SDP を使用してサーバー アプリケーションを自動的にアドバタイズしません。アプリケーションは、リモート Bluetooth アプリケーションによって検出される WSASetService 関数を呼び出す必要があります。
関連トピック
-
Windows ソケット の