gpt4 book ai didi

python - 如何使用 xmlrpclib 将 client_address 公开给所有方法?

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:17 26 4
gpt4 key购买 nike

我创建了一个小的 SimpleXMLRPCServer 来检查客户端的 ip。

我试试这个:

服务器

导入xmlrpclib

从 SimpleXMLRPCServer 导入 SimpleXMLRPCServer

server = SimpleXMLRPCServer(("localhost", 8000))

def MyIp(): 返回 "你的 ip 是:%s"% server.socket.getpeername()

server.register_function(MyIp)

server.serve_forever()

客户端

导入xmlrpclib

se = xmlrpclib.Server("http://localhost:8000 ")

打印 se.MyIp()

错误

xmlrpclib.Fault: :(107, '传输端点未连接')">

如何使 client_address 对所有函数可见?

最佳答案

例如,如果您想将 client_address 作为第一个参数传递给每个函数,您可以将 SimpleXMLRPCRequestHandler 子类化(在实例化 SimpleXMLRPCServer 时将您的子类作为处理程序传递)并覆盖 _dispatch(将 self.client_address 添加到 params 元组,然后将其余部分委托(delegate)给 SimpleXMLRPCRequestHandler._dispatch)。如果这种方法没问题,并且您想查看代码,尽管问!

我不确定您如何安全地使用函数参数以外的任何东西来“使 client_address 可见”——没有 client_address 作为裸名,全局否则,只有请求处理程序类的每个实例的 self.client_address(并且诸如将其复制到全局变量之类的 hack 感觉真的确实令人讨厌——而且不安全在线程等下)。

关于python - 如何使用 xmlrpclib 将 client_address 公开给所有方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/978784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com