好的,我已经阅读了这篇文章以寻找正确的答案,但它似乎不符合我的目的。
现在,解决问题:
我在 C 中有一个传统的客户端-服务器架构(所有套接字都是非阻塞的),其中服务器正在侦听传入连接,客户端尝试连接。第一次连接成功,一切正常,直到我在服务器上按 Ctrl + C。
代码的客户端检测到连接丢失并配备一个重试计时器。客户端代码应该通过在每个计时器弹出时使用 POSIX 间隔计时器一次又一次地尝试在服务器上重新连接。但是,它不会关闭套接字或重新启动。现在,每次重试连接时,connect() 都会返回
传输端点已连接
即使重新启动使用 SO_REUSEADDR 并成功启动的服务器,连接也不会完成。我需要实现的一件事是服务器上的信号处理程序,用于在 Ctrl+C 上关闭。
但是,我是否需要关闭客户端的套接字描述符并在每次断开连接时重新开始,或者有没有办法解决这个问题?