c - 如何解决阻塞套接字(用于 SSL 握手)的 Connect() 超时问题?

标签 c linux sockets tcp network-programming

这类问题(有很多变体)有点回答但是.. 我确实需要在套接字上进行阻塞连接(我正在使用 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/

相关文章:

c# - udpclient可以同时是组播和单播吗

c++ - 套接字 - 在数据传输后保持套接字打开

c - dlmalloc 中的 bin_at

objdump 和 gdb 的组合

linux - 在 Fedora 中找不到 xml-config 包

linux - 哪个交叉编译器?

i2cdump/i2cget 可以在 C 可执行文件中使用吗?

.net 数据包嗅探 : attempt to create socket causes access error

c - c编程中的BIOSCOM命令

c - 向函数指针添加参数