Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: udp broadcast

by haukex (Bishop)
on May 13, 2020 at 09:08 UTC ( #11116744=note: print w/replies, xml ) Need Help??


in reply to udp broadcast

I think you don't need to set up all those options the way you did, the following is enough for me to recieve UDP broadcasts.

use IO::Socket::INET; my $sock = IO::Socket::INET->new( Proto => 'udp', LocalPort => 4210 ); $sock->recv(my $data, 100) or die $!; print "<<$data>>\n";

Test via echo "Hello World" | socat - UDP-DATAGRAM:255.255.255.255:4210,broadcast

Of course, if you've got a firewall, it has to allow incoming UDP packets on that port.

Replies are listed 'Best First'.
Re^2: udp broadcast
by oha (Friar) on May 13, 2020 at 09:26 UTC
    great! thanks!

    I'm still confused why this work this way, since 4210 is not the local port, but the broadcast port. nevertheless it works and i'm happy :)

      Glad to help!

      I'm still confused why this work this way, since 4210 is not the local port, but the broadcast port.

      It's the port you're listening on, on the local machine. (The sender is not necessarily sending from their port 4210, they may be sending from a random port, but their packets are addressed to port 4210 on the receiving side. Update: You can see this in the tcpdump output you showed: "192.168.0.50.49153 > 192.168.0.255.4210")

      BTW, if you want to get the address from which the packet was sent, you can call $sock->peerhost immediately after the recv.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11116744]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (3)
As of 2022-05-16 23:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (64 votes). Check out past polls.

    Notices?