我得到Httpd的套接字句柄,主机是“127.0.0.1”,端口是80;
sub getHttpNetSock {
my $client = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => $host,
Blocking => 1,
PeerPort => $port)
or return($client);
$client->autoflush(1); # so output gets there right away
return($client);
}
在此之后,如果我能够连接,我尝试从socket获取信息。
$ch = getHttpNetSock($apachePort);
if ($ch) {
$ret = getSockVal($ch, $apachePort);
}
其中getSockVal:
sub getSockVal {
my $sock = shift;
print $sock "GET http://127.0.0.1:80/test/servlet/HealthServlet\n";
my $val= <$sock>;
chomp($val);
return($val);
}
HealthServlet只能返回“OK”或“TROUBLE”,但在100个案例中,我得到了绝对的另一个信息。为什么会发生? Apache和perl脚本位于VMware虚拟机上。
答案 0 :(得分:3)
由于你只是想要一个GET-Request,你不需要求助于IO :: Socket :: INET并处理HTTP,让LWP为你做这件事。
为了便于错误检查,首选方法是使用LWP :: UserAgent,如下所述:
http://search.cpan.org/dist/libwww-perl/lib/LWP/UserAgent.pm