<div dir="ltr"><div class="gmail_default" style="font-family:courier new,monospace">I'm trying to accomplish what I thought was easy, and yet I can't get it to work.</div><div class="gmail_default" style="font-family:courier new,monospace"><br></div><div class="gmail_default" style="font-family:courier new,monospace">I have a number of devices that listen on UDP port 9999.</div><div class="gmail_default" style="font-family:courier new,monospace">So I want to send a broadcast message to my network and see all</div><div class="gmail_default" style="font-family:courier new,monospace">of their specific responses, so I can collect the list of IP addresses</div><div class="gmail_default" style="font-family:courier new,monospace">(for subsequent messaging).</div><div class="gmail_default" style="font-family:courier new,monospace">For a single device, it looks like this:</div><div class="gmail_default" style="font-family:courier new,monospace"><br></div><div class="gmail_default" style="font-family:courier new,monospace">192.168.1.149:port  -->  <a href="http://255.255.255.255:9999">255.255.255.255:9999</a></div><div class="gmail_default" style="font-family:courier new,monospace">192.168.1.149:port  <--  <a href="http://192.168.1.130:9999">192.168.1.130:9999</a></div><div class="gmail_default" style="font-family:courier new,monospace"><br></div><div class="gmail_default" style="font-family:courier new,monospace">So I've tried a number of things starting from a single socket all the way to</div><div class="gmail_default" style="font-family:courier new,monospace">a send socket and a second receive socket, but I can never read the response that's sent.</div><div class="gmail_default" style="font-family:courier new,monospace"><br></div><div class="gmail_default" style="font-family:courier new,monospace">My last attempt is this code snippet... can anyone tell me what's wrong ?</div><div class="gmail_default" style="font-family:courier new,monospace"><br></div><div class="gmail_default" style="font-family:courier new,monospace"><br></div><div class="gmail_default" style="font-family:courier new,monospace">$out = IO::Socket::INET->new(<br>    PeerPort  => 9999,<br>    PeerAddr  => inet_ntoa(INADDR_BROADCAST),<br>    Proto     => udp,<br>    ReuseAddr => 1,<br>    Broadcast => 1)<br>        or die "Can't bind : $@\n";<br><br>my $lport = $out->sockport();           # get the local port that was assigned<br>print "sending from $lport\n";<br><br>$in = IO::Socket::INET->new(<br>    PeerPort  => 9999,<br>    LocalPort => $lport,<br>    Proto     => udp,<br>    ReuseAddr => 1)<br>        or die "Can't bind : $@\n";<br><br>my $s = IO::Select->new($in);<br>$s->add($out);<br><br>$out->send('hello') or die "send: $!";<br><br>while ($i++ < 100) {<br>    my @ready = $s->can_read(1);<br>    foreach (@ready) {<br>        die("readable but nothing read\n") unless defined($_->recv($rsp, 1024));<br>        print $rsp;<br>    }<br>}<br></div></div>