TCP/IP 數據流套接字傳輸注意事項

1. IP地址修改後關閉原來套接字

  1. 問題的出現: 一個本機客戶端已鏈接的套接字, 在修改本機IP後, 再去關閉該鏈接服務器套接字;
  2. 出現的狀況: close() 或shutdown() 顯示成功. 注意: 此時去服務器查看套接字狀態, 發現該套接字在服務器上並未關閉, 繼續處於鏈接ESTABLISHED狀態.
  3. 在關閉鏈接套接字前, 一定要 確保此套接字對應的IP地址不被修改..
  4. 該錯誤容易出現在: DHCP 服務 與 manual set IP 操作之間.. 確保關閉鏈接套接字先於這兩種操作.
  5. 當對機器的IP進行修改時, 它會有一段響應的滯後時間, 所以在接下來繼續鏈接服務器時, 需要避過該段時間. 否則會導致套接字的鏈接地址爲 被修改前的IP地址, 此時, client 向服務器傳輸數據,結果爲 服務器接收端 無反應, client端寫入數據成功. 此時一定很鬱悶糾結,
    原因:
      1. 向服務器傳輸 時, 此時client IP 地址爲修改後的, 而套接字鏈接時的IP地址爲修改前的, 向該套接字中寫入數據, 會被放在 套接字發送緩衝區中, 不會被髮送出去. 導致雖然client寫入成功, 但是server確接受不到.
發佈了76 篇原創文章 · 獲贊 23 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章