Rpyc 不向客户端传输任何方法或库

问题描述 投票:0回答:1

所以我想制作一个 C2 服务器,将方法和库传输到其客户端,但由于某种原因它不想这样做。我查了一下版本,是6.0.0,而且电脑上没有防火墙。代码不会吐出任何错误,除了; AttributeError:'SlaveService'对象没有属性expose_add,所以我认为这是我的代码中的某种错误。 这是我的 C2:

import rpyc
conn = rpyc.classic.connect("localhost", 18812)
while True:
   class MyService(rpyc.Service):
        def on_connect(self, conn):
            print("connection made")
        def on_disconnect(self, conn):
            print("connection closed")
        def exposed_add(self, x, y):
            resukt = x + y
            print(resukt)
            print("jesus")
if __name__ == "__main__":
    from rpyc.utils.server import ThreadedServer
    server = ThreadedServer(Myservice, port=18812,protocol_config = {"allow_public_attrs" : True} )
    server.start()

上面的代码有正确的标识,我只是不知道如何将其放在这里(这是我的第一篇文章)

我尝试将库传输到客户端,但它要么吐出我上面提到的错误,要么只是说欢迎和再见。当客户要求导入时,它不起作用,但是当我执行 conn.execute('for循环') 时,它工作得很好,甚至给了我结果。我尝试通过 conn.execute 方法导入库,但它仍然给我带来与上面相同的错误 这是我的客户:

import rpyc

conn = rpyc.connect("localhost", 18812)
rez = conn.root.exposed_add(5, 6)
print(rez)

我是这方面的初学者,但我正在努力学习,所以如果某个地方有大错误,请对我宽容一点

python multithreading server service rpyc
1个回答
0
投票

前缀暴露_是为了RPyC的利益而存在的,以标记哪些函数可供连接的客户端使用。当服务器实际启动时,该前缀将被解析、消除。

不以暴露_为前缀的函数是服务器内部的函数,不能从外部调用。

如果您编写了一个名为 displayed_add() 的函数,则可以使用 conn.root.add() 从客户端脚本调用它

© www.soinside.com 2019 - 2024. All rights reserved.