2014-07-21 2 views
0

각 프로세스에 자체 스레드를 만들어 TCP, UDP 및 HTTP 연결을 허용하는 서버를 만들려고합니다. TCP 및 HTTP 연결을 이미 완료했으며 UDP 부분이 올바르게 시작되지만 UDP를 통해 메시지를 보내려고하면 시스템이 중단됩니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?파이썬 스레드 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() 

를 추가하는 것을 잊었다