我想在python中使用线程服务器套接字。我从互联网上找到了这个代码。我工作得很好,但我不知道发生了什么。 任何人都可以简单地解释它,我想将数据从main发送到MiTcpHandler类。我怎么能这样做?
import SocketServer
import threading
import time
class MiTcpHandler(SocketServer.BaseRequestHandler):
def handle(self):
data = ""
while data != 'End':
data = self.request.recv(1024)
print data
time.sleep(0.1)
class ThreadServer(SocketServer.ThreadingMixIn,SocketServer.ForkingTCPServer):
pass
def Main():
host=''
port = 9998
server = ThreadServer((host,port),MiTcpHandler)
server_thread = threading.Thread(target=server.serve_forever)
server_thread.start()
Main()
答案 0 :(得分:0)
如评论中所述,您应该阅读SocketServer
模块文档。它包括如何使用它的示例。由此您可以了解代码的工作原理。
对于问题的第二部分,如何从" main"在线程中,您需要建立到服务器的TCP连接(同一主机上的端口9998)。您可以使用socket.create_connection()
:
def Main():
host=''
port = 9998
server = ThreadServer((host,port),MiTcpHandler)
server_thread = threading.Thread(target=server.serve_forever)
server_thread.start()
# connect to the server and send some data
import socket
s = socket.create_connection(('localhost', 9998))
s.send('hi there\n')
s.send('End\n')
这将从充当客户端的main函数将数据发送到服务器。请注意,您需要在处理程序中执行更多工作,以正确处理终止连接和检测终止"End"
字符串。