所以我想制作一个 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)
我是这方面的初学者,但我正在努力学习,所以如果某个地方有大错误,请对我宽容一点
前缀暴露_是为了RPyC的利益而存在的,以标记哪些函数可供连接的客户端使用。当服务器实际启动时,该前缀将被解析、消除。
不以暴露_为前缀的函数是服务器内部的函数,不能从外部调用。
如果您编写了一个名为 displayed_add() 的函数,则可以使用 conn.root.add() 从客户端脚本调用它