如何从Perl Frontier-RPC调用中获取客户端的IP地址?

时间:2009-01-21 04:47:13

标签: perl xml-rpc

我正在尝试让我的Perl Frontier XML-RPC守护程序知道调用者的IP地址。我不得不说我是Perl的新手,所以也许这很明显。我知道Frontier::Daemon继承自IO::Socket::INET,它有一个peeraddr()方法,但是当守护进程没有将自己的实例传递给XML-RPC时,这对我没有帮助方法调用。

这是我的代码的样子,粗略地说:

    my $server = Frontier::Daemon->new(
        methods => {
                diff => \&diff,
        },
        LocalPort => 8080,
        ReuseAddr => 1,
    );

然后在下面:

sub diff {
    return $_[0] - $_[1];
}

如何从'diff'中获取来电者的IP地址?

2 个答案:

答案 0 :(得分:1)

不幸的是,您无法使用Frontier的服务器类执行此操作。到调用本地过程/方法时,您对实际的套接字连接本身没有任何句柄。

实际上,能够访问此信息是我在RPC::XML包中添加到服务器类的最新功能。请参阅服务器类文档中的“How Methods Are Called”部分。

答案 1 :(得分:0)

我运行Frontier :: Daemon和Frontier :: RPC2(在Apache下)。我不知道如何在使用Frontier :: Daemon时获取客户端IP,但如果使用Frontier :: RPC2,则Apache环境变量$ ENV {REMOTE_ADDR}将包含客户端的IP地址。