程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> Python socket.error: [Errno 98] Address already in use

Python socket.error: [Errno 98] Address already in use

編輯:Python

今天在寫一個Python與html5 Websocket 實例,麼次終止運行重新運行腳本總是提示地址已經存在並且被使用!查詢相關文檔才知道在socket編程中,當通過客戶端向服務器端發送消息,關閉了連接後,這時如果馬上再去運行服務器端程序,會提示這個錯誤:
socket.error: [Errno 98] Address already in use

這是因為在TCP/IP終止連接的四次握手中,當最後的ACK回復發出後,有個2MSL的時間等待,MSL指一個片段在網絡中最大的存活時間,這個時間一般是30秒,所以基本上過60秒後就可以重新連接!

為什麼要等待2MSL?是因為在最後發出ACK回復後,發送方不能確認ACK是否被另一端正常收到,如果另一端沒有收到ACK回復的話,將會在1MSL後再次發送FIN片段。所以說發送方等待2MSL時間,也就是剛好它發ACK回復和對方發送FIN片段的時間,如果此時間內都沒有再次收到FIN片段的話,發送方就假設對方已經正常接收到了ACK回復,此時它就會正常關閉連接!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved