共用方式為


藍牙和套接字選項

適用於 Windows 的藍牙支援下列套接字選項。 套接字選項會分別使用 setsockoptgetsockopt 函式來設定和查詢。 下列所有選項都可以與 setsockopt 函式搭配使用,但只能使用 SO_BTH_MTU 選項搭配 getsockopt 函式使用。

使用藍牙套接字選項需要下列設定:

  • 參數必須是藍牙套接字。
  • 層級 參數必須 SOL_RFCOMM

SO_BTH_AUTHENTICATE

針對已中斷連線的套接字,SO_BTH_AUTHENTICATE 會指定 連線接受 作業才能順利完成的驗證。 如果先前未驗證兩個藍牙裝置,則設定此套接字選項會在連線建立期間主動起始驗證。 如有必要,傳遞金鑰交換的使用者介面是由應用程式內容外部的作系統所提供。

對於需要驗證的連出連線,如果驗證未成功,連線 作業會失敗,WSAEACCES。 回應中,應用程式可能會提示使用者在連線之前驗證兩個藍牙裝置。

對於連入連線,如果無法建立驗證,並傳回 WSAEHOSTDOWN 錯誤,連線就會遭到拒絕。 如需驗證藍牙裝置的詳細資訊,請參閱 BluetoothAuthenticateDevice

針對 SO_BTH_AUTHENTICATE 套接字選項,optval 是 ULONG bAuthenticate 的指標,且必須 TRUE;optlen 相當於 “sizeof(ULONG)”。

具有SP2的 Windows XP:SO_BTH_AUTHENTICATE会启动联机套接字的验证,並在未連接套接字的連線時強制驗證。 對於連入連線,如果無法執行驗證,連線就會遭到拒絕。

SO_BTH_ENCRYPT

在未連接的套接字上,SO_BTH_ENCRYPT 套接字選項會強制執行加密來建立連線。 加密僅適用於已驗證的連線。 針對連入連線,無法建立加密的聯機會自動遭到拒絕,並傳回 WSAEHOSTDOWN 做為錯誤。 針對連出連線,如果無法建立加密,連線 函式會因為無法建立 WSAEACCES 而失敗。 回應中,應用程式可能會提示使用者在連線之前驗證兩個藍牙裝置。 如需驗證藍牙裝置的詳細資訊,請參閱 BluetoothAuthenticateDevice

針對 SO_BTH_ENCRYPT 套接字選項,optval 是 ULONG bEncrypt 的指標,而且必須 TRUE;optlen 相當於 sizeof(ULONG)。

具有SP2的 Windows XP: 針對已連線和驗證的套接字,SO_BTH_ENCRYPT 開始加密。

SO_BTH_MTU

SO_BTH_MTU 套接字選項是主要用於驗證的進階選項。 SO_BTH_MTU 選項會取得或設定預設 RFCOMM MTU(最大傳輸單位),以便將連線交涉的值與 RFCOMM 通訊協定預設值不同。

由於 RFCOMM MTU 受到基礎 L2CAP MTU 的影響,以及通訊協定和應用程式最小值和最大值,因此 SO_BTH_MTU 的預設值只是與遠端對等進行交涉的起點,而最終交涉的 MTU 可能會與預設值不同。 設定 SO_BTH_MTU 值可能會對輸送量造成負面影響,因此,應該使用基礎藍牙通訊協定的知識來執行任何修改。

SO_BTH_MTU 套接字選項可以在連接的套接字上執行,但如果交涉已完成,則沒有任何作用。 在接聽 (伺服器) 套接字上設定它沒有任何作用。

應用程式可以在單一套接字呼叫中傳送或接收的數據量不受 MTU 影響;MTU 只會影響基礎 Windows 套接字服務提供者區隔傳輸封包的方式。 建議的 MTU 和 MTU 最終都必須在 RFCOMM_MIN_MTURFCOMM_MAX_MTU之間,如 Ws2bth.h 頭檔中所定義。

針對 SO_BTH_MTU 套接字選項,optval 是 ULONG mtu 的指標;optlen 相當於 “sizeof(ULONG)”。

SO_BTH_MTU_MAX

SO_BTH_MTU_MAX 套接字選項是主要用於驗證的進階選項。 SO_BTH_MTU_MAX 套接字選項會設定連線交涉的最大 RFCOMM MTU (最大傳輸單位)。 在連線 /接受 程式期間,RFCOMM MTU 等於或大於此值的連接會失敗。 當連線套接字允許設定此套接字選項時,如果交涉已完成,則不會有任何作用。 在接聽套接字上設定此套接字選項會傳播所有連入連線的值。 MAX MTU 值必須介於 RFCOMM_MIN_MTURFCOMM_MAX_MTU之間,如 Ws2bth.h 頭檔中所定義。

針對 SO_BTH_MTU_MAX 套接字選項,optval 是 ULONG max_mtu 的指標;optlen 相當於 “sizeof(ULONG)”。

SO_BTH_MTU_MIN

SO_BTH_MTU_MIN 套接字選項是主要用於驗證的進階選項。 SO_BTH_MTU_MIN 套接字選項會設定連線交涉的最低 RFCOMM MTU (最大傳輸單位)。 在 連線/接受 程序期間,小於此值的 RFCOMM MTU 聯機會失敗。 當連線套接字允許設定此套接字選項時,如果交涉已完成,則不會有任何作用。 在接聽套接字上設定此套接字選項會傳播所有連入連線的值。

只有接聽套接字可以向下修改 MTU,因此,如果連接套接字提出的值小於接聽套接字上為 SO_BTH_MTU_MIN 設定的值,則會拒絕連線。 最小 MTU 必須介於 RFCOMM_MIN_MTURFCOMM_MAX_MTU之間,如 Ws2bth.h 頭檔中所定義。

針對 SO_BTH_MTU_MIN 套接字選項,optval 是 ULONG min_mtu 的指標;optlen 相當於 “sizeof(ULONG)”。

Windows Sockets

取得

setsockopt

BluetoothAuthenticateDevice

連線

接受