当我从Winsock调用connect()函数时,有什么方法可以减少超时吗? 我觉得差不多是30秒,我想放5秒。Winsock中的connect()函数中的超时
回答
最简单的方法是在连接时使用非阻塞模式的套接字,并使用select()
超时5秒来检查套接字是否可写。在select()
退出后,连接建立或不建立。如果没有,请考虑连接超时并根据需要执行错误处理。
但是通过这种方式,必须建立连接,对吧? – cna
@cna,你是什么意思'必须'?最多5秒后,你将控制回去,你会知道它是否成立。 – SergeyA
@cna:一个非阻塞套接字在后台建立连接,而你的代码继续做其他事情。因此,将套接字设置为非阻塞模式('ioctlsocket(FIONBIO)'设置为1),然后调用'connect()'。如果'connect()'返回'SOCKET_ERROR'并且'WSAGetLastError()'返回'WSAEWOULDBLOCK',那么连接正在进行,所以在5秒的超时时间内调用'select()'。如果'select()'返回成功,表示套接字可写,则连接已建立。否则,关闭插座。 –
- 1. 的Winsock接受超时
- 2. Winsock - WSAConnect()委托connect()吗?
- 3. Winsock函数的执行时间太长
- 4. Winsock C++连接超时
- 5. 如何设置winsock接受函数超时?
- 6. 奇怪的连接超时使用winsock
- 7. connect()函数时间太长
- 8. 如何在C套接字上设置“connect()”函数的超时时间?
- 9. Amazon Connect超时Lex Bot
- 10. java.net.ConnectException:连接超时:connect?
- 11. Winsock中的数组异步
- 12. recv函数如何工作-winsock函数
- 13. winsock套接字函数中的协议参数是什么?
- 14. Winsock接受函数的错误
- 15. 在C++中使用connect()时设置超时
- 16. 在JavaScript/jQuery中超时函数
- 17. PHP函数超时
- 18. 的Winsock的connect()返回永久WSAETIMEDOUT,但腻子同一端口
- 19. 从Qock中的winsock继承函数继承类
- 20. node.js中的connect-redis的过期会话的回调函数
- 21. 如何在线程中运行的函数中设置超时
- 22. 基本的Shellcode的connect()函数
- 23. render()中的connect()?
- 24. connect()方法忽略超时值
- 25. 致命错误:Uncaught CurlException:28:connect()超时?
- 26. 如何检测的WinSock TCP超时与BindIoCompletionCallback
- 27. WINSOCK - 在不存在的IP上设置连接尝试超时?
- 28. mysql_connect()函数[function.mysql-CONNECT]错误
- 29. jquery延迟超时函数?
- 30. AngularJS:$超时不是函数
目前还不清楚你想做两件完全不同的事。你想改变'connect'调用返回之前的时间吗?或者你想改变实际连接操作愿意等待多久?无论需要多长时间,最好的解决方案可能仅仅是等待超过5秒钟的“连接”。 –
是的,我想更改连接呼叫返回之前的时间。如果在5秒内它不起作用,我放弃并继续前进。 – cna
无法改变'connect()'本身在退出之前等待的时间。它是一种全或无的功能。但是你可以把套接字设置为异步/非阻塞模式,这样'connect()'将立即退出,然后你可以使用'select()','WSAEventSelect()'或者WSAAsyncSelect()来处理使用任何你想要的超时等待。 –