如何强制Windows Bluetooth Connect()调用超时

时间:2013-11-15 05:43:45

标签: c++ windows bluetooth

有没有办法 - 任何方式 - 强制

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()的讨论{{ 3}}。

看来,connect()上的默认超时时间约为5秒,显然可能是in this question - 我看到auth / connect失败过程需要80秒。但是,如果它在前1-2秒内没有连接,它就不会 - 并且直到放弃,我们的GUI无法以任何方式向最终用户显示任何有意义的内容。额外的几秒钟很重要。

是否可以实际执行超时,或者是在线程中启动它的唯一方法,如果花费太长时间就终止该线程?

1 个答案:

答案 0 :(得分:0)

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

long lFlag;
SOCKET btSocket;

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