Python 如何使用xmlrpclib向所有方法公开客户端地址?

Python 如何使用xmlrpclib向所有方法公开客户端地址?,python,xmlrpclib,Python,Xmlrpclib,我创建了一个用于检查客户端ip的小SimpleXMLRPCServer 我试试这个: 服务器 导入xmlrpclib 从SimpleXMLRPCServer导入SimpleXMLRPCServer server=SimpleXMLRPCServer((“localhost”,8000)) def MyIp(): return“您的ip为:%s”%server.socket.getpeername() 服务器注册功能(MyIp) 服务器。永远为您服务() 客户 导入xmlrpclib se=xml

我创建了一个用于检查客户端ip的小SimpleXMLRPCServer

我试试这个:

服务器 导入xmlrpclib

从SimpleXMLRPCServer导入SimpleXMLRPCServer

server=SimpleXMLRPCServer((“localhost”,8000))

def MyIp(): return“您的ip为:%s”%server.socket.getpeername()

服务器注册功能(MyIp)

服务器。永远为您服务()

客户 导入xmlrpclib

se=xmlrpclib.Server(“”)

打印se.MyIp()

错误 xmlrpclib.Fault::(107,‘传输端点未连接’”>


如何使客户端地址对所有函数可见?

例如,如果希望将
客户端地址作为每个函数的第一个参数传递,可以将SimpleXMLRPCRequestHandler子类化(在实例化SimpleXMLRPCServer时将子类作为处理程序传递)并重写
\u dispatch
(将
self.client\u address
前置到params元组,然后将其余部分委托给
SimpleXMLRPCRequestHandler.\u dispatch
)。如果此方法可行,并且您想查看代码,请询问


除了函数参数“使
client\u address
可见”之外,我不知道如何安全地使用任何东西——没有
client\u address
作为一个简单的名称,不管是全局的还是其他的,只有请求处理程序类的每个实例的
self.client\u address
(将其复制到全局变量之类的黑客行为确实让人感觉很恶心——线程下不安全等等)。

我使用的是相同的方法。SimpleXMLRPCRequestHandler的子类并将客户端地址附加到调用函数的参数中。