我正在尝试让我的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地址?
发布于 2009-01-21 21:07:57
不幸的是,你不能使用Frontier的服务器类来做到这一点。在调用本地过程/方法时,您还没有实际套接字连接本身的任何句柄。
碰巧,能够访问这些信息是我最近在RPC::XML包的服务器类中添加的一个特性。请参阅服务器类文档中的"How Methods Are Called“部分。
发布于 2009-01-21 15:30:30
我同时运行Frontier::Daemon和Frontier::RPC2 (在Apache下)。我不知道使用Frontier::Daemon时如何获取客户端IP,但如果使用Frontier::RPC2,那么Apache环境变量$ENV{REMOTE_ADDR}将包含客户端的IP地址。
https://stackoverflow.com/questions/464109
复制相似问题