原来我们实现connect()超时基本上都使用unix网络编程一书的非阻塞方式(connect_nonb),今天在网上看到一篇文章,觉得很有意思,转载如下:
读Linux内核源码的时候偶然发现其connect的超时参数竟然和用SO_SNDTIMO操作的参数一致:
File: net/ipv4/af_inet.c
| 559 timeo = sock_sndtimeo(sk, flags & O_NONBLOCK); 560 561 if ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) { 562 /* Error code is set above */ 563 if (!timeo || !inet_wait_for_connect(sk, timeo)) 564 &nb |

这篇博客介绍了如何通过设置SO_SNDTIMEO选项利用setsockopt函数来控制connect调用的超时时间,从而避免在连接过程中阻塞。文章提供了一个简单的C语言示例程序,演示了如何设置超时时间和检查连接失败的情况。

1万+

被折叠的 条评论
为什么被折叠?



