这类问题(有很多变体)有点回答但是.. 我确实需要在套接字上进行阻塞连接(我正在使用 SSL),我可以设置超时和最大重试次数,以及所有持续时间不超过 t 秒所需的一切。
我只希望我可以在操作系统(linux:Ubuntu/CentOS)中设置一些东西,或者在代码(C)中以某种方式进行设置,而不用像选择等待、超时事件这样丑陋的、人为的方式添加到关闭套接字的 epoll。谢谢。
最佳答案
最简单的方法是在连接调用之前和之后使用警报系统调用并处理警报信号,但这不是最好和最有用的方法。更好和推荐的方法是使用非阻塞套接字并使用轮询或选择系统调用来处理建立连接的不同阶段。但是如果你不想使用非阻塞 IO,你唯一的方法就是使用警报。
有关使用非阻塞套接字的教程,请参阅:http://developerweb.net/viewtopic.php?id=3196
有关连接调用期间发生的情况的更多信息,请参阅:http://www.madore.org/~david/computers/connect-intr.html
关于c - 如何解决阻塞套接字(用于 SSL 握手)的 Connect() 超时问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17587309/