在我的程序中,我在服务器上有几个套接字。每个插槽都有自己的端口。我试图检测客户端是否关闭了连接:
signal(SIGPIPE, sig_pipe);
但我遇到的问题是我不知道连接关闭的是哪个套接字。 是否有一些方法可以让它知道?
有关代码的更多信息: 在主程序中,我在不同的端口上启动了3个套接字。接受,接收和发送我放在一个线程中的每个套接字。所以我最后有3个帖子。
谢谢。
答案 0 :(得分:3)
您应该设置SIGPIPE
被忽略(请参阅sigaction(2)
)并处理来自write(2)
等的EPIPE
错误代码。
请注意,从TCP套接字读取零字节是另一方关闭连接的真实指示。