Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.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中线程化服务器套接字_Python_Multithreading_Sockets - Fatal编程技术网

在python中线程化服务器套接字

在python中线程化服务器套接字,python,multithreading,sockets,Python,Multithreading,Sockets,我想要python中的线程服务器套接字。我从网上找到了这个代码。我工作得很好,但我不知道发生了什么。 任何人都可以简单地解释一下,我想把数据从main发送到MiTcpHandler类。我该怎么做 import SocketServer import threading import time class MiTcpHandler(SocketServer.BaseRequestHandler): def handle(self): data = "" w

我想要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()

如评论中所述,您应该阅读模块文档。它包括如何使用它的示例。从中您可以了解代码是如何工作的

对于问题的第二部分,如何将数据从“main”发送到线程,您需要建立到服务器的TCP连接(同一主机上的端口9998)。您可以使用:

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')

这将从作为客户端的主功能向服务器发送数据。请注意,您需要在处理程序中做更多的工作,以正确处理连接终止和终止
“End”
字符串的检测。

我建议您阅读
SocketServer
模块的文档:我不想从套接字发送数据。我想从args或类似的东西发送,从init或其他。。。