UDP обнаруживает трансляцию и прослушивает — не работает для меня

#perl #udp #discovery

#perl #udp #обнаружение

Вопрос:

В моей сети есть простое устройство, которое отвечает на широковещательные передачи udp определенного сообщения. Он отвечает отправителю информацией о местоположении. Я могу отправить широковещательную передачу и увидеть правильный ответ, поступающий на Wireshark, но мой код perl не показывает ответ. Я знаю, что это должно быть просто, но я не вижу этого…


 #!/usr/bin/perl
use warnings;
use IO::Socket::INET;

print "n>> Discovery Program <<n";
#--
#-- find.pl
#--

# Create a sending socket
my $sock = IO::Socket::INET->new(
                       PeerPort  => 55555,
                       PeerAddr  => inet_ntoa(INADDR_BROADCAST),
                       Proto     => 'udp',
                       LocalPort => 0,
                       Broadcast => 1)
                   or die "Can't bind : $@n";

# Send message
my $msg = "XYZ";
chomp $msg;
$sock->send($msg);

# Receive message
my $text;
$sock->recv($text,128);
print "nReceived message '", $text,"'n";
  

Комментарии:

1. Вероятно, вам следует проверить возвращаемое значение $sock->send и $sock->recv на предмет определенности, и ошибка будет в, $! если какой-либо метод возвращает undef .

2. recv Возвращается?

3. recv не возвращается.