執行分析
1. 開啟伺服器程式:
2. 執行netstat -a命令觀察當前的連線狀態:
第1條連線記錄說明:繫結了本地主機的任意IP,埠為9877,目前處於監聽狀態。
3. 開啟客戶程式:
4. 執行netstat -a命令觀察當前的連線狀態,發現了兩個新的連線:
以及
上面一個連線說明一個連線到伺服器的連線,客戶端臨時埠是32818,目的埠正是先前的9877,連線狀態為已建立,對應已連線套接字;
下面一個連線說明一個連線到客戶端的連線,服務端埠為9877,目的埠是32818,這個連線已經建立,對應的是已連線套接字;
因為是在一臺機器上做的測試,因此出現了上述兩條“ 對稱 ”的結果。
5. 然後測試該回射程式:
6. 接下來,ctrl+D中斷連線,然後立馬netstat -a查詢連線狀態:
可以觀察到,多了一條是客戶端的TIME_WAIT狀態的記錄( 伺服器端是沒有什麼狀態顯示的因為程式已經結束了 ):
7. 過一段時間,再次netstat -a,會發現上面那條記錄已經沒了。這是因為TIME_WAIT過一段時間就沒了,和設想一致。