Bluetoothと接続
Bluetoothでは、connect関数を使用して、以前に作成したBluetoothソケットを使用して、ターゲットのBluetoothデバイスに接続します。 SOCKADDR_BTH構造体であるconnect関数のnameパラメーターは、ターゲットのBluetoothデバイスを指定する必要があります。 ターゲットデバイスを識別するには、次の2つのメカニズムを使用します。
- SOCKADDR_BTH構造体では、接続が要求されるポート番号を直接指定できます。 このメカニズムでは、接続操作を試行する前に、アプリケーションが独自のSDPクエリを実行する必要があります。
- SOCKADDR_BTH構造体では、接続先のサービスの一意のサービスクラスIDを指定できます。 ピアデバイスにサービスクラスIDに対応する複数のポートがある場合、connect関数呼び出しは最初の有効なサービスに接続します。 このメカニズムは、前のSDPクエリなしで使用できます。
SOCKADDR_BTH構造体をconnect関数と共に使用する場合は、次の要件が適用されます。
- BtAddrメンバーは、有効なリモートラジオアドレスである必要があります。
- ServiceClassIdメンバーの場合、ポートメンバーが0の場合、システムはserviceClassIdを使用して、サービスに対応するリモートポートを解決しようとします。 サービスクラスは、Bluetooth仕様で定義されている正規化された128ビットGUIDです。 一般的なGuidは、Bluetoothの割り当てられた番号ドキュメントで定義されています。 または、ドメイン固有のアプリケーションに一意のGUIDを使用することもできます。
- ポートメンバーは、有効なリモートポートであるか、serviceClassIdメンバーが指定されている場合は0である必要があります。
次の表に、Bluetoothとconnect関数の結果コードを示します。
エラー/エラー# | 説明 |
---|---|
WSAEISCONN10056 |
既に接続されているソケットに対してconnect関数が呼び出されました。 |
WSAEACCES10013 |
接続アプリケーションが認証を要求しましたが、認証に失敗しました。 |
WSAENOBUFS10055 |
回復不能なメモリ不足エラー。 |
WSAEADDRINUSE10048 |
要求されたポート/チャネル番号は使用中です。 |
WSAETIMEDOUT10060 |
Bluetooth無線レベル (PAGE_TIMEOUT) でI/Oがタイムアウトしました。 |
WSAEDISCON10101 |
RFCOMMチャネルがリモートピアによって切断されました。 |
WSAECONNRESET10054 |
RFCOMMマルチプレクサー (セッション) がリモートピアによって切断されました。 |
WSAECONNABORTED10053 |
アプリケーションによってソケットがシャットダウンされました。 |
WSAENETUNREACH10051 |
L2CAPまたはBluetooth無線レベルでのタイムアウト以外のエラー。 |
WSAEHOSTDOWN10064 |
RFCOMMはDM応答を受信しました。 |
WSAENETDOWN10050 |
予期しないネットワークエラー。 |
WSAESHUTDOWN10058 |
L2CAPチャネルがリモートピアによって切断されました。 |
WSAEADDRNOTAVAIL10049 |
Bluetoothポート/チャネルまたはデバイスアドレスが無効です。 |
WSAEINVAL10022 |
プラグアンドプレイ、ドライバースタックイベント、またはその他のエラーが原因でエラーが発生しました。 |