Создание многопоточного сервера с использованием фреймворка SocketServer в python
Этот вопрос решен. Рабочий код приведен ниже в этом посте тоже.
проблема: В настоящее время я знакомлюсь с сетевым программированием на Python. В настоящее время я работаю с фреймворком SocketServer. Теперь мой вопрос: как мне создать многопоточный сервер, который может принимать более одного клиента, используя модуль SocketServer? Я в основном пытался использовать этот код
t = Thread(target=server.serve_forever())
t.start()
В настоящее время в моей программе сервер принимает только одного клиента. Я подключаюсь к серверу, используя netcat. Первый клиент подключается к серверу без проблем. Если я пытаюсь подключиться к серверу со второго клиента, клиент просто продолжает ждать подключения. Как только я отключаю первый клиент, второй клиент автоматически соединяется с сервером. Мне кажется, что многопоточность не работает. Я могу'не могу понять, где я что-то упустил. Любой намек будет замечательным. Мой код, как показано ниже:
#!/usr/bin/env python
import SocketServer
from threading import Thread
class service(SocketServer.BaseRequestHandler):
def handle(self):
data = 'dummy'
print "Client connected with ", self.client_address
while len(data):
data = self.request.recv(1024)
self.request.send(data)
print "Client exited"
self.request.close()
server = SocketServer.TCPServer(('',1520), service)
t = Thread(target=server.serve_forever())
t.start()
Спасибо
Обновить: Следующий код является решением:
#!/usr/bin/env python
import SocketServer
from threading import Thread
class service(SocketServer.BaseRequestHandler):
def handle(self):
data = 'dummy'
print "Client connected with ", self.client_address
while len(data):
data = self.request.recv(1024)
self.request.send(data)
print "Client exited"
self.request.close()
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
pass
t = ThreadedTCPServer(('',1520), service)
t.serve_forever()