2011-02-11 117 views
0

我是C真正的noob。我試圖在C開發自己的鎖服務器(只是爲了練習)。我有一個問題...讓我們想象一下,我們有用C編寫的服務器,我們有通過套接字連接到此服務器的遠程主機。當連接被啓動 - 我的服務器已經在內存中創建了指針。遠程主機斷開連接時是否可以刪除該指針?我如何捕捉斷開連接事件?如何捕捉斷開事件?

謝謝

+0

取決於您使用的API。儘管通常不存在真正的斷開連接事件,只有關機,拒絕接收數據包和超時 – 2011-02-11 20:51:53

回答

0

在真實世界的io場景中,您無法真正檢測到斷開連接。相反,您必須:

  1. 接收指示另一方打算斷開連接的數據包。
  2. 嘗試傳輸在通信之間的「靜默」期間由於連接更改而無法傳送的軟件包。

這意味着系統其中「必須」確保連接通常發送和接收定期「虛擬」的消息來檢測連接的丟失早於它會通過「正規」的業務單獨檢測。

根據您的應用程序,保持活動消息的開銷可能不值得。

你在網絡一側的「連接」實際上只是一串數據結構,可以讓你發送和接收數據。 「TCP/IP」較低的「IP」層是無連接的,這意味着您不會知道您的模擬「連接」是否可用,直到您嘗試使用它(或收到一個包明確告訴您另一端不會處理更多數據)。

0

read(2)系統調用將返回零當插座的另一端關閉連接。