有没有办法 - 任何方式 - 强制
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无法以任何方式向最终用户显示任何有意义的内容。额外的几秒钟很重要。
是否可以实际执行超时,或者是在线程中启动它的唯一方法,如果花费太长时间就终止该线程?
答案 0 :(得分:0)
在进行连接呼叫之前,您是否尝试将套接字设置为非阻塞?
long lFlag;
SOCKET btSocket;
btSocket = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
lFlag = 1;
ioctlsocket(btSocket, FIONBIO, &lFlag);