簡體   English   中英

如何強制Windows Bluetooth Connect()調用超時

[英]How to force a Windows Bluetooth Connect() call to timeout

有什么辦法-完全有辦法-強迫

BluetoothAuthenticateDevice( HWND hwndParent, HANDLE hRadio, BLUETOOTH_DEVICE_INFO * pbtbi, PWSTR pszPasskey, ULONG ulPasskeyLength);

connect(SOCKET s, const struct sockaddr FAR * name, int namelen);

函數調用超時?

我嘗試將SO_RCVTIMEO和SO_SNDTIMEO設置為connect()套接字上的不同值,以查看它們是否影響函數調用的長度,但無濟於事-並且在此問題中有一些關於它們是否影響connect()的討論

似乎connect()上的默認超時大約為5秒,並且在AuthenticateDevice上顯然可以慢到30-45秒 -我已經看到認證/連接失敗過程需要80秒。 但是,如果它在最初的1-2秒內沒有連接,就不會連接-在此之前,我們的GUI都無法以任何一種方式顯示對最終用戶有意義的任何內容。 多余的幾秒鍾確實很重要。

是否可以實際執行超時,還是在線程中啟動超時並殺死線程的唯一方法(如果花費的時間太長)?

在進行連接調用之前,您是否嘗試過將套接字設置為非阻塞狀態?

long lFlag;
SOCKET btSocket;

   btSocket = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
   lFlag = 1;
   ioctlsocket(btSocket, FIONBIO, &lFlag);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM