2014-07-21 58 views
0

我想通過讓每個進程都有自己的線程來製作一個允許TCP,UDP和HTTP連接的服務器。我已經完成了TCP和HTTP連接,並且UDP部分啓動正確,但是當我嘗試通過UDP發送消息時,系統掛起。有誰知道如何解決這個問題?Python線程化的UDP和TCP服務器?

的UDP類處理程序:

class ThreadedUDPRequestHandler(socketserver.BaseRequestHandler): 
    def handle(self): 
     data = self.request[0].strip() 
     socket = self.request[1] 
     print("{} wrote: ".format(self.client_address[0])) 
     print(data) 
     socket.sendto(data.upper(), self.client_address) 

的UDP主題:

class ThreadedUDPServer(socketserver.ThreadingMixIn, socketserver.UDPServer): 
     pass 

地點代碼:

if __name__ == "__main__": 
    # Port 0 means to select an arbitrary unused port 
    HOST, PORT = "127.0.0.1", 8000 

    Handler = http.server.SimpleHTTPRequestHandler 
    httpd = socketserver.TCPServer(("", PORT), Handler) 
    http_thread = threading.Thread(target=httpd.serve_forever) 
    print("Website serving at port", PORT) 

    udpserver = ThreadedUDPServer((HOST,PORT+1), ThreadedUDPRequestHandler) 
    udp_thread = threading.Thread(target=udpserver.serve_forever) 
    print("UDP serving at port", PORT+1) 

    tcpserver = ThreadedTCPServer((HOST, PORT-1), ThreadedTCPRequestHandler) 
    server_thread = threading.Thread(target=tcpserver.serve_forever) 
    print("TCP serving at port", PORT-1) 
    udp_thread.start() 

解決: 我忘了補充

udp_thread.start() 

回答

0

我忘了在底部

添加

udp_thread.start()