0

有什么办法——任何办法——强制

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

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

函数调用超时?

我尝试在 connect() 套接字上将 SO_RCVTIMEO 和 SO_SNDTIMEO 设置为不同的值,以查看它们是否影响函数调用的长度,但无济于事 - 并且在这个问题中讨论了它们是否影响 connect() 。

connect() 上的默认超时似乎约为 5 秒,而在 AuthenticateDevice 上显然可能慢至 30-45 秒- 我已经看到 auth/connect 失败过程需要 80 秒。但是,如果它在前 1-2 秒内没有连接,它就不会连接 - 并且在这放弃之前,我们的 GUI 无法以任何方式显示对最终用户有意义的任何内容。额外的几秒钟确实很重要。

是否可以实际强制超时,或者是在线程中启动它并在花费太长时间时终止线程的唯一方法?

4

1 回答 1

0

在进行连接调用之前,您是否尝试过将套接字设置为非阻塞?

long lFlag;
SOCKET btSocket;

   btSocket = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
   lFlag = 1;
   ioctlsocket(btSocket, FIONBIO, &lFlag);
于 2013-12-05T22:33:32.253 回答