應用層的場景
1 數據中斷
socket的特點是隨時可能關閉,即發送和接受的數據隨時可能中斷。
應用層必須能處理socket數據中斷的情況。
2 無感知關閉
socket的另一邊有可能已關閉,並且我們無法感知。
應用層必須有一個心跳機制,當超過一定時間未收到心跳,則關閉socket。
SOCKET層的場景
調用close注意事項:
(1)調用close是無阻塞返回的。
(2)調用close之後,並沒有馬上釋放socket資源,可能要等待比較長的時間。因此最好設置l_linger參數,強制一定時間內回收socket。
windows的關閉行為如下: