這個端口占用問題一直困擾我好久。。
下面給出解決方法,以後還是要多讀讀python庫源碼啊!!!!!
#繼承socketserver.ThreadingTCPServer
class ThreadingTCPServerA(socketserver.ThreadingTCPServer):
allow_reuse_address = True #----- 將重用端口設置成 True
class MyServerException(Exception):
""""""
class MyServer(socketserver.BaseRequestHandler):
def setup(self):
self.request.settimeout(conf.serverText['TimeOut']) # 設置超時時間
def finish(self):
pass
def handle(self):
while True:
time.sleep(0.1)
try:
conn = self.request
client_data = conn.recv(1024)
print(client_data)
if not client_data:
break
except socket.timeout:
break
except Exception as e:
print(e)
break
#繼承socketserver.ThreadingTCPServer
class ThreadingTCPServerA(socketserver.ThreadingTCPServer):
allow_reuse_address = True #----- 將重用端口設置成 True
def serverStart():
serverAddrPort = (conf.serverText['host'], conf.serverText['port'])
try:
global server
server = ThreadingTCPServerA(serverAddrPort, MyServer)
import threading
# 必須啓動一個線程 而不能在主線程中執行 否則server.shutdown() 卡死
global server_thread
server_thread = threading.Thread(target=server.serve_forever, daemon=False)
except OSError:
raise MyServerException('端口被佔用%s....', serverAddrPort)