我正在尝试让我的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地址?
答案 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地址。