2011-06-23 239 views
2

在我的程序中,我在服務器上有幾個套接字。每個套接字都有自己的端口。我試圖發現,如果客戶端關閉與連接:C++檢測客戶端是否關閉連接(多套接字)

signal(SIGPIPE, sig_pipe); 

,但我有我不知道在哪個插座連接關閉的問題。 有一些方法可以讓它知道嗎?

更多關於的代碼: 在主程序中,我在不同的端口上啓動了3個套接字。接受,接收和發送每個套接字我放入一個線程。所以我最後有3個線程。

謝謝。

回答

3

您應該設置SIGPIPE被忽略(請參閱sigaction(2))並處理EPIPE錯誤代碼從write(2)等等。

請注意,從TCP套接字讀取零字節是另一方關閉連接的真實指示。

+0

我使用「發送」命令,但我也可以通過「發送」命令來處理EPIPE錯誤。 http://www.gnu.org/s/hello/manual/libc/Sending-Data.html謝謝 –

+0

是的,這就是「和喜歡」的意思:) –

相關問題