大佬教程收集整理的这篇文章主要介绍了recv()windows socket占用无限时间 – 如何超时?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
2.15 – 如何更改Winsock函数的超时?
一些阻塞的Winsock函数(例如connect())嵌入了一个超时.这背后的理论是只有堆栈具有设置适当超时所需的所有信息.然而,有些人发现堆栈使用的价值对于他们的应用来说太长了;它可以是一分钟或更长.
您可以使用SO_SNDTIMEO和SO_RCVTIMEO setsockopt()选项调整send()和recv()超时. .
对于其他Winsock函数,最好的解决方案是避免完全阻塞套接字.所有非阻塞套接字方法都提供了构建自定义超时的方法:
Non-blocking sockets with @R_874_10288@ct() – The fifth parameter to the @R_874_10288@ct() function is a timeout value. Asynchronous sockets – Use the Windows API SetTimer(). Event objects – WSAWaitForMultipleEvents() has a timeout parameter. Waitable Timers – Call CreateWaitableTimers() to make a waitable timer,which you can then pass to a function like WSAEvent@R_874_10288@ct() along with your sockets: if none of the sockets is signalled before the timer goes off,the blocking function will return anyway.
请注意,使用异步和非阻塞套接字,您可以完全避免处理超时.即使Winsock忙,你的程序也会继续工作.因此,您可以让用户取消花费太长时间的操作,或者只是让Winsock的自然超时到期而不是在代码中接管此功能.
以上是大佬教程为你收集整理的recv()windows socket占用无限时间 – 如何超时?全部内容,希望文章能够帮你解决recv()windows socket占用无限时间 – 如何超时?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。