RPyC客户端之间发送消息冻结

2024-04-23 14:25:38 发布

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

我正在尝试使用RPyC从一个客户端向另一个客户端发送消息。在

目前我使用以下代码,首先启动服务器,然后连接并“注册”客户机到服务器(我也可以对on_connect()方法执行此操作。。。但在我看来,这并没有改变任何东西)。在

任何建议或帮助非常感谢,谢谢!在

要注册客户,我执行以下操作:

在一个shell上(client1=>;light):

import h_client
c = h_client._connectToServer()
c.root.registerClient("light")

在另一个shell上(client2=>;深色):

^{pr2}$

脚本冻结,直到我回到“light”shell并编写一些东西(比如c.root…),然后我可以在我的“光”壳上看到结果,如果我在壳中什么也不做,结果似乎永远不会出现。。在

服务器(h_服务器.py)公司名称:

import rpyc
from rpyc.utils.server import ThreadedServer

class HChat_Server(rpyc.Service):

    CLIENTS = {}

    def exposed_registerClient(self, clientID):

        self.CLIENTS[clientID] = self._conn.root.exposed_catchData

    def exposed_getAllClients(self):

        return self.CLIENTS

    def exposed_sendDataToClient(self, clientID, dataType, sender, data):

        self.CLIENTS[clientID](dataType, sender, data)


if __name__ == "__main__":

    t = ThreadedServer(HChat_Server, port = 5000, protocol_config={"allow_public_attrs" : True})
    t.start()

客户(h_客户端.py)公司名称:

class HChat_ClientService(rpyc.Service):

    def exposed_catchData(self, dataType, sender, data):

        sys.stdout.write("=> {0}: {1} ({2})".format(sender, data, dataType))

def _connectToServer():

    server_conn = rpyc.connect("localhost", 5000, service=HChat_ClientService)

    return server_conn

Tags: importself服务器客户端datadefshellsender