python3 socketserver TCPServer 端口占用

這個端口占用問題一直困擾我好久。。

下面給出解決方法,以後還是要多讀讀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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章