Я использую сценарий Perl (на компьютере Linux), чтобы проверить, работает ли рабочий стол Windows 10 (в той же сети) или нет:
use Net::Ping;
$p = Net::Ping("tcp");
print "Host is alive.\n" if $p->ping("host_name");
$p->close()
Этот сценарий не видит, что рабочий стол Windows жив. Однако, когда я использую «ping» из терминала, он видит рабочий стол Windows и получает от него эхо.
Копая дальше в проблеме, я обнаружил, что команда «ping» использует «icmp» протокол. Таким образом, когда я использовал этот протокол в «Net :: Ping», он мог видеть рабочий стол Windows живым. Однако запуск его с использованием «icmp» требует привилегии root, и я не могу себе этого позволить.
Может ли кто-нибудь помочь мне решить, почему «Net :: Ping» с протоколом «tcp» не видит windows рабочий стол как живой?
Заранее спасибо.