1. IP地址修改後關閉原來套接字
- 問題的出現: 一個本機客戶端已鏈接的套接字, 在修改本機IP後, 再去關閉該鏈接服務器套接字;
- 出現的狀況: close() 或shutdown() 顯示成功. 注意: 此時去服務器查看套接字狀態, 發現該套接字在服務器上並未關閉, 繼續處於鏈接ESTABLISHED狀態.
- 在關閉鏈接套接字前, 一定要 確保此套接字對應的IP地址不被修改..
- 該錯誤容易出現在: DHCP 服務 與 manual set IP 操作之間.. 確保關閉鏈接套接字先於這兩種操作.
- 當對機器的IP進行修改時, 它會有一段響應的滯後時間, 所以在接下來繼續鏈接服務器時, 需要避過該段時間. 否則會導致套接字的鏈接地址爲 被修改前的IP地址, 此時, client 向服務器傳輸數據,結果爲 服務器接收端 無反應, client端寫入數據成功. 此時一定很鬱悶糾結,
原因:
- 向服務器傳輸 時, 此時client IP 地址爲修改後的, 而套接字鏈接時的IP地址爲修改前的, 向該套接字中寫入數據, 會被放在 套接字發送緩衝區中, 不會被髮送出去. 導致雖然client寫入成功, 但是server確接受不到.