最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python進(jìn)程結(jié)束后端口占用問題解析

 更新時間:2022年01月30日 14:50:57   作者:PinkD  
這篇文章主要為大家介紹了python中在進(jìn)程結(jié)束后端口依然被占用的問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

socket分配

一個服務(wù)端進(jìn)程向操作系統(tǒng)申請一個 scoket 來監(jiān)聽,但是當(dāng)進(jìn)程退出后,還未關(guān)閉的連接不會立即消失,而是會留給操作系統(tǒng)處理。操作系統(tǒng)會嘗試關(guān)閉這個連接。但是如果關(guān)閉時出現(xiàn)問題,這個連接就會一直處于 TIME_WAIT 或其他非正常狀態(tài),而這是相應(yīng)的端口還處于占用狀態(tài),如果這個時候再重新啟動這個服務(wù)端程序,就會出現(xiàn)地址被占用的情況

例子

測試代碼:

import socket
s = socket.socket()
s.bind(('0.0.0.0', 12345))
s.listen()
(client, addr) = s.accept()
print(client)
print(addr)

使用 nc 進(jìn)行連接:

nc 127.0.0.1 12345

服務(wù)端會打印 client 和 addr ,然后正常退出,但是此時使用 netstat -anop | grep 12345 查看,發(fā)現(xiàn)對應(yīng)連接并沒有被立即釋放

tcp        0      0 127.0.0.1:12345         127.0.0.1:59408         TIME_WAIT   -                    timewait (28.18/0/0)

此時再次啟動服務(wù)端,發(fā)現(xiàn)報錯了:

Traceback (most recent call last):
  File "server.py", line 5, in <module>
    s.bind(('0.0.0.0', 12345))
OSError: [Errno 98] Address already in use

解決方案

使用 setsockopt :

import socket
s = socket.socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('0.0.0.0', 12345))
s.listen()
(client, addr) = s.accept()
print(client)
print(addr)

此時就不會出現(xiàn)地址被占用的提示了

在 c 中也有一樣的方法,只是方法聲明不同, c 版的用法為

struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(12345);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
int s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
int reuse = 1;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse));
bind(s, (struct sockaddr *) &addr, sizeof(addr))
listen(s, )
struct sockaddr_in in_addr;
int len = sizeof(in_addr);
int client = accept(socket, (struct sockaddr *) in_addr, &len);
//handle client
//...

其他

  • 發(fā)現(xiàn)除了 SO_REUSEADDR 之外還有一個 SO_REUSEPORT 的選項,查詢后得知是 BSD 獨(dú)有的, Linux 并不能用
  • 如果是客戶端綁定端口用這個屬性可能會出現(xiàn)剛連接上服務(wù)器就莫名其妙收到一個 FIN 的問題,導(dǎo)致其立即關(guān)閉,因此客戶端使用此選項時需注意

參考鏈接

socket連接關(guān)閉問題分析

PortProtection

以上就是python進(jìn)程結(jié)束后端口占用問題解析的詳細(xì)內(nèi)容,更多關(guān)于進(jìn)程結(jié)束后端口占用問題的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用python快速獲取PDF文件頁數(shù)的辦法

    使用python快速獲取PDF文件頁數(shù)的辦法

    有時在處理或打印一個PDF文檔之前,你可能需要先知道該文檔包含多少頁,對于程序員來說,編寫腳本來完成這項工作會更加高效,本文就介紹一個使用Python快速獲取PDF文件頁數(shù)的辦法,需要的朋友可以參考下
    2024-03-03
  • Kotlin 中的 apply 函數(shù)用法詳解

    Kotlin 中的 apply 函數(shù)用法詳解

    apply 函數(shù)是 Kotlin 中一個十分方便的工具,它使得對對象進(jìn)行初始化和配置變得更加簡潔、清晰,通過與 Java 的對比,我們可以看出 Kotlin 在處理類似情況時具有更高的表現(xiàn)力和簡潔性,本文給大家介紹Kotlin apply 函數(shù)的用法,感興趣的朋友一起看看吧
    2024-03-03
  • OpenCV如何去除圖片中的陰影的實現(xiàn)

    OpenCV如何去除圖片中的陰影的實現(xiàn)

    這篇文章主要介紹了OpenCV如何去除圖片中的陰影的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python 畫3維軌跡圖并進(jìn)行比較的實例

    python 畫3維軌跡圖并進(jìn)行比較的實例

    今天小編就為大家分享一篇python 畫3維軌跡圖并進(jìn)行比較的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 使用matplotlib中scatter方法畫散點(diǎn)圖

    使用matplotlib中scatter方法畫散點(diǎn)圖

    這篇文章主要為大家詳細(xì)介紹了使用matplotlib中scatter方法畫散點(diǎn)圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Python解決線性代數(shù)問題之矩陣的初等變換方法

    Python解決線性代數(shù)問題之矩陣的初等變換方法

    今天小編就為大家分享一篇Python解決線性代數(shù)問題之矩陣的初等變換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 深入源碼解析Python中的對象與類型

    深入源碼解析Python中的對象與類型

    這篇文章主要介紹了深入源碼解析Python中的對象與類型,涉及到對象的引用計數(shù)方法和類型的定義等深層次內(nèi)容,需要的朋友可以參考下
    2015-12-12
  • Python實現(xiàn)二分查找算法實例

    Python實現(xiàn)二分查找算法實例

    這篇文章主要介紹了Python實現(xiàn)二分查找算法,實例分析了二分查找算法的原理與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2015-05-05
  • python爬取網(wǎng)頁轉(zhuǎn)換為PDF文件

    python爬取網(wǎng)頁轉(zhuǎn)換為PDF文件

    這篇文章主要為大家詳細(xì)介紹了python爬取網(wǎng)頁轉(zhuǎn)換為PDF文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • python anaconda 安裝 環(huán)境變量 升級 以及特殊庫安裝的方法

    python anaconda 安裝 環(huán)境變量 升級 以及特殊庫安裝的方法

    下面小編就為大家?guī)硪黄猵ython anaconda 安裝 環(huán)境變量 升級 以及特殊庫安裝的方法。
    2017-06-06

最新評論

大渡口区| 宝兴县| 安西县| 五莲县| 修武县| 曲靖市| 尤溪县| 仁寿县| 博野县| 康保县| 元氏县| 乐山市| 彩票| 安陆市| 荆州市| 波密县| 津市市| 新蔡县| 墨江| 黄大仙区| 桂阳县| 贵阳市| 徐水县| 远安县| 昌吉市| 旬邑县| 卓尼县| 钦州市| 苍溪县| 雷州市| 济阳县| 彭泽县| 甘德县| 合作市| 崇左市| 遂昌县| 仁化县| 石河子市| 六枝特区| 巫溪县| 吉安市|