如何在 Linux 上用 C 检测套接字上的 CLOSE_WAIT?

Jar*_*rek 5 c sockets linux status

我正在编写 TCP 客户端,我想在连接断开时立即重新连接(即服务器重新启动)。我想尽快重新启动连接,即使没有数据可以通过此套接字发送。我在 netstat 中看到连接处于 CLOSE_WAIT 状态,但 select、getsockopt 或 getpeername 没有错误。我知道我可以尝试向套接字写入一些内容,但此连接仅供读取。

mga*_*aia 0

man recv

返回值

这些调用返回接收到的字节数,如果发生错误则返回 -1。当对等方执行有序关闭时,返回值为 0。