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
プラグアンドプレイ、ドライバースタックイベント、またはその他のエラーが原因でエラーが発生しました。

Windows ソケット

connect

SOCKADDR_BTH