導航:首頁 > 編程語言 > python關閉socket

python關閉socket

發布時間:2025-08-26 05:35:57

『壹』 linux python socket怎麼去除

原因是server端關掉了tcp連接,給client發送FIN信號,client的tcp層回了ACK,然後它的socket狀態就處於close_wait狀態。

實驗:

Python中,socket在send之前處於close_wait狀態,那麼該send不會報錯,並且執行完之後socket就closed了。再繼續調用send就會報錯。


推理:

說明python的socket.send在發送數據之前會檢查socket的狀態,如果處於close_wait,就執行close(socket)(應用層感覺不到哦),然後正常退出。所以再次send時,會拋出異常。


為什麼會一直處close_wait狀態?

當socket處於close_wait時,必須由應用層調用close(socket),發送FIN給server端才能變為LAST_ACK,接收到server端回應的ACK後,才變為CLOSED。如果應用層不調用close(),那麼socket會一直處於close_wait。[1]


如果我在python中不斷循環去調用socket.sendall(),那麼在socket變為close_wait後,通過socket.sendall()也會關閉socket,為什麼它還是一直處在close_wait狀態呢?

原因在於當sendall(data)的data比較大,在data被發送一半時,連接被server端斷掉了。那麼sendall(data)會一直卡在那,也就不會執行到sendall的開始處,去判斷socket狀態,確定是否關閉socket了。

簡單而言,就是socket在變為close_wait之後,根本沒有調用sendall()去關閉socket。


閱讀全文

與python關閉socket相關的資料

熱點內容
媒體文化pdf 瀏覽:248
linuxmysql資料庫目錄 瀏覽:310
命令方塊做水上鞋 瀏覽:551
python中可迭代的數列怎麼寫 瀏覽:70
python中geos安裝 瀏覽:962
將命令方塊替換成空氣 瀏覽:415
美德書中央編譯出版社pdf 瀏覽:455
真封神命令 瀏覽:295
linux命令實例 瀏覽:700
如何取消伺服器的密碼是什麼原因 瀏覽:573
php表格製作 瀏覽:408
液體的壓縮性 瀏覽:453
防sql注入方法python 瀏覽:269
只有我可以命令 瀏覽:795
動態編譯免費版 瀏覽:706
連夜搶修缺陷即是命令 瀏覽:484
為什麼域名必須有伺服器 瀏覽:652
android應用開發書籍 瀏覽:412
卸載源碼編譯 瀏覽:896
世界爭霸怎麼在伺服器里 瀏覽:350