我为客户端的ip ip创建了一些SimpleXMLRPCServer。
我试试这个:
导入xmlrpclib
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对所有函数可见?
答案 0 :(得分:3)
如果您希望例如将client_address
作为第一个参数传递给每个函数,则可以将SimpleXMLRPCRequestHandler子类化(在实例化SimpleXMLRPCServer时将子类作为处理程序传递)并覆盖_dispatch
(以前置{ {1}}到params元组,然后将其余部分委托给self.client_address
)。如果这种方法没问题并且您想查看代码,请询问!
我不确定你如何安全地使用除了“使SimpleXMLRPCRequestHandler._dispatch
可见”的函数参数之外的任何东西 - 没有client_address
作为一个简单的名称,全局或其他,只有请求处理程序类的每个实例的client_address
(以及诸如将其复制到全局变量之类的hack确实确实确实令人讨厌 - 并且在线程下不安全等等。)