python利用setsockopt獲得埠重用
阿新 • • 發佈:2019-01-08
假如埠被socket使用過
,並且利用socket.close()來關閉連線,但此時埠還沒有釋放
,要經過一個TIME_WAIT的過程之後才能使用,這是TNN的相當煩銀的,為了實現埠的馬上覆用
,可以選擇setsockopt()函式來達到目的。(以下是網上找到的一篇文章的一小段相關例子,試用之後,相當有效果,特此提取出來收藏)
埠複用的實現,我在這裡用Python舉個TCP埠複用的例子,UDP套接字要做的完全一樣。
import socket
tcp1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 在繫結前呼叫setsockopt讓套接字允許地址重用
tcp1.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcp2.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 接下來兩個套接字都也可以繫結到同一個埠上
tcp1.bind(('0.0.0.0', 12345))
tcp2.bind(('0.0.0.0', 12345))