【问题标题】:how can I get the ip address of the request in a regested function of python xmlrpc server如何在python xmlrpc服务器的regested函数中获取请求的IP地址
【发布时间】:2024-01-20 00:10:02
【问题描述】:

我正在用 python 编写一个简单的 xmlrpc 程序。类似于以下内容:

def foo(数据): # 我想在这里获取调用客户端的 IP 地址...我该怎么做? 服务器=SimpleXMLRPCServer.SimpleXMLRPCServer((主机,端口)) server.register_function(foo) server.handle_request()

从上面可以看出,我想在注册函数“foo”中获取客户端IP地址,怎么办?

【问题讨论】:

    标签: python call ip xml-rpc


    【解决方案1】:

    您可以通过子类化服务器(也可能是处理程序)来实现。例如:

    class MyXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer):
        def process_request(self, request, client_address):
            self.client_address = client_address
            return SimpleXMLRPCServer.SimpleXMLRPCServer.process_request(
                self, request, client_address)
    
    server=SimpleXMLRPCServer.MyXMLRPCServer((host, port))
    

    现在 server.client_address 为您提供所需的数据。请注意,这种直接、简短的编码仅适用于单线程情况(无论如何您都可以通过在代码中选择简单的服务器来使用它)——如果您想使用多线程,则需要使用处理程序.

    【讨论】:

    • 谢谢亚历克斯。但是如何访问注册函数“foo”中的实例变量“client_address”?
    • @john, server.client_address,当然——实例被命名为server,所以它的实例变量被访问为server.whatever
    • 这比实例化请求处理程序要好一些,将这样的client_address绑定到服务器实例更容易访问,我有一个类似的请求,让注册函数根据客户端IP地址表现不同,供他人参考。
    最近更新 更多