gpt4 book ai didi

perl - 如何在 Perl 中检查互联网连接是否存在?

转载 作者:行者123 更新时间:2023-12-02 08:36:37 24 4
gpt4 key购买 nike

我有一个简单的脚本,可以定期(每隔几秒一次)验证该服务器是否有互联网连接。需要明确的是,它并不是要检查外部站点/服务/服务器是否处于事件状态。作为可靠的互联网目的地,我使用 google、yahoo 等网站的 IP。通常我使用 3 个目的地(LAN、ISP 网络、外部 ISP)

我当前负责此操作的代码只是对 ping 的简单而肮脏的调用:

    my $pingResponse = `ping -c 1 -w 1 123.123.123.123`;
my $isConnected = parsePingResponse($pingResponse);

它似乎有效,但我确信这不是完成此任务的正确/最佳方法。至少有 3 个缺点:外部系统调用,速度慢,截止时间相对较长,为 1 秒。

所以,我的问题是:如何以 perlish 方式简单高效地实现 ping 功能,以验证互联网连接是否有效?

(我认为 LWP 是一种杀伤力。站点或页面是否可用并不重要,只要某些外部 IP 可达即可。可能它应该是涉及低级网络的简单东西)

最佳答案

最糟糕的方法是 Net::Ping .

my $p = Net::Ping->new;
if ($p->ping("123.123.123.123", 1)) {
print "Host is reachable\n";
}

如果您希望命令运行得更快,超时可以是 float (例如 0.5)。您需要选择适合您需要的超时;超时时间越长,互联网连接的可能性就越大,但需要的时间更长。

关于perl - 如何在 Perl 中检查互联网连接是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14875298/

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