Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从单独线程运行的Python ServerSocket_Python_Sockets_Serversocket_Python Multithreading - Fatal编程技术网

从单独线程运行的Python ServerSocket

从单独线程运行的Python ServerSocket,python,sockets,serversocket,python-multithreading,Python,Sockets,Serversocket,Python Multithreading,我想在单独的线程中运行Python serversocket类。为此,我修改了此代码以支持python线程: 原始文件 import SocketServer class MyTCPHandler(SocketServer.BaseRequestHandler): def handle(self): self.data = self.request.recv(1024).strip() print self.data if __name__ == "_

我想在单独的线程中运行Python serversocket类。为此,我修改了此代码以支持python线程:

原始文件

import SocketServer

class MyTCPHandler(SocketServer.BaseRequestHandler):
    def handle(self):
        self.data = self.request.recv(1024).strip()
        print self.data

if __name__ == "__main__":
    HOST, PORT = "192.168.65.1", 5001
    server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) 
    server.serve_forever()
到我的文件:

import SocketServer

class MyTCPHandler(SocketServer.BaseRequestHandler): 

    def __init__(self):
        self._running = True

    def terminate(self):
        self._running = False

    def setup(self):
         print('{}:{} connected'.format(*self.client_address))

    def handle(self):
        self.data = self.request.recv(1024).strip()
        print self.data

    def finish(self):
         print('{}:{} disconnected'.format(*self.client_address))

#if __name__ == "__main__":
    def run(self):
        HOST, PORT = "192.168.65.1", 5001
        server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
        server.serve_forever()
我使用

Thread(target=MyTCPHandler().run, args=()).start()
但是,当我运行主python文件时,出现了这个错误

----------------------------------------
Exception happened during processing of request from ('192.168.65.1', 37997)
----------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
TypeError: __init__() takes exactly 1 argument (4 given)
首先,我对支持线程的修改是否正确?
请,有人能帮我一个忙吗?

这里的问题是,您向父方法SocketServer.BaseRequestHandler传递的参数数量不正确

读一读,你就会明白这个问题。简言之,kargs可以接受不同数量的参数

希望能有帮助。 改变

def __init__(self):
    self._running = True 
def __init__(self, *kargs):
    SocketServer.BaseRequestHandler.__init__(self, *kargs)
    self._running = True