gpt4 book ai didi

perl - 有时我从套接字中得到的不是我期望的

转载 作者:行者123 更新时间:2023-11-28 21:51:47 25 4
gpt4 key购买 nike

我得到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);
}

在此之后,如果我能够连接,我会尝试从套接字获取信息。

$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 虚拟机上。

最佳答案

因为您只需要一个 GET 请求,所以您无需求助于 IO::Socket::INET 并处理 HTTP,让 LWP 为您完成。

为了便于错误检查,首选方法是使用 LWP::UserAgent,如下所述:

http://search.cpan.org/dist/libwww-perl/lib/LWP/UserAgent.pm

关于perl - 有时我从套接字中得到的不是我期望的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28108405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com