2009-12-26 85 views

回答

4

如果套接字的另一端關閉,您的結束將被標記爲可讀,並從read返回0 - 這是「文件結束」指示。

如果試圖write這樣的插座,您將收到的SIGPIPE信號,而write將返回錯誤,並將errno設置EPIPE(「斷管」)。您必須準備好處理此事件,因爲另一端可以關閉任何時間的套接字。

+0

謝謝!你能否提供更多關於如何做的細節?當例如ctrl-c在客戶端被按下時,我們是否也應該返回一個SIGINt信號?再次感謝您的幫助 – Apollo 2009-12-26 11:17:10

+0

@Apollo信號不會在不同的計算機之間發送 – qrdl 2009-12-26 13:08:39

+0

如果使用ctrl-c來終止客戶端應用程序,則操作系統將關閉連接,服務器進程將能夠檢測到結束文件條件。 – caf 2009-12-26 13:15:16

-1

您需要TCP_KEEPALIVE

+0

謝謝!但如果ctrl-c被按下,我們應該如何處理它? – Apollo 2009-12-26 11:20:56

+0

Keepalive(SO_KEEPALIVE是套接字選項的名稱,順便說一句)與它無關。 OP沒有詢問檢測半開連接 – qrdl 2009-12-26 13:07:02

+0

謝謝!我知道Keepalive功能與中斷無關... – Apollo 2009-12-27 14:29:55

相關問題