Этот вопрос решен. Рабочий код приведен ниже в этом сообщении.
Проблема: В настоящее время я знаком с сетевым программированием с 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()
Спасибо
Update: Следующий код - это решение:
#!/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()