我创建了一些用于检查客户端IP的SimpleXMLRPCServer。
我尝试这样:
服务器
导入xmlrpclib
从SimpleXMLRPCServer导入SimpleXMLRPCServer
服务器= 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元组和然后将其余内容委托给SimpleXMLRPCRequestHandler._dispatch
)。如果这种方法还可以,并且您想查看代码,请询问!
我不确定您如何安全地使用除函数参数之外的任何东西来“使client_address
可见”-根本没有client_address
作为全局名称或其他形式的裸名,每个实例的self.client_address
请求处理程序类(以及将其复制到全局变量之类的黑客确实确实感到很讨厌-并且在线程化下是不安全的,等等)。
关于python - 如何使用xmlrpclib将client_address公开给所有方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/978784/