1

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

在我使用以下代码的那一刻,我首先启动服务器,然后将客户端连接并“注册”到服务器(我也可以对 on_connect() 方法做到这一点......但到目前为止没有改变任何东西如我所见)。

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

要注册客户,我这样做:

在一个外壳上(client1 => light):

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

在另一个外壳(client2 => dark)上:

import h_client
c = h_client._connectToServer()
c.root.registerClient("dark")
c.root.sendDataToClient("light", "msg", "me", "My great message")

脚本冻结,直到我回到“轻”外壳并写一些东西(如 c.root ...),然后我可以在“轻”外壳上看到结果,如果我在外壳中什么都不做,似乎结果永远不会出现..

服务器(h_server.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_client.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
4

0 回答 0