藍牙和套接字選項

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

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

  • s 參數必須是 藍牙 套接字。
  • level 參數必須SOL_RFCOMM

SO_BTH_AUTHENTICATE

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

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

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

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

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

SO_BTH_ENCRYPT

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

針對 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_MTU 與 RFCOMM_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

getsockopt

setsockopt

藍牙 AuthenticateDevice

connect

接受