這個問題已解決。工作代碼也在這篇文章中給出。在Python中使用SocketServer框架創建多線程服務器
問題: 我目前越來越熟悉與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()
恩,謝謝。文檔中的示例對於像我這樣的新手來說很複雜。所以,我用你的想法,現在我的程序按預期工作。 –