在pythontcp服务器中添加handle()功能的正确方法?

2024-05-19 10:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的代码:

class SingleTCPHandler(SocketServer.BaseRequestHandler):
    """ One instance per connection. """
    def handle(self):
        data = Net.recv_from_socket(self.request)
        GUI.run(str("RECV'd message: %s" % data))

class SimpleServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
    def __init__(self, server_address, RequestHandlerClass):
        SocketServer.TCPServer.__init__(self, server_address, RequestHandlerClass)

但是我不想使用GUI,一个全局变量,来包含当服务器接收到消息时我要调用的函数。相反,我想向SingleTCPHandler类发送GUI对象,这样它就可以本地调用函数,而不是引用全局变量。在

有什么想法?对python有点陌生。。。在


Tags: 代码selfdataserverinitaddressdefgui
1条回答
网友
1楼 · 发布于 2024-05-19 10:30:06

这对我很有效:

class MyServer():
    def __init__(self, myGui, host='', port=8875):
        myServer = socketserver.TCPServer((host, port), functools.partial(MyHandler, myGui))
        myServer.serve_forever()

class MyHandler(socketserver.BaseRequestHandler): 
    def __init__(self, myGui, socket, client_address, tcpServer):
        self.myGui = myGui
        super().__init__(socket, client_address, tcpServer) 

    def handle(self):
        ...

相关问题 更多 >

    热门问题