in reply to Re: UDP-Broadcast with socket
in thread UDP-Broadcast with socket
Thank you very much
I followed your advice, but somehow the send doesn't reach the server (on the same host). The network is fine, and Ikegamis script works perfect (except that it is not broadcasting).
server.pl:
#! /usr/bin/perl use warnings; use strict; use Socket qw(:all); $|++; # no suffering from buffering my $udp_port = 9999; socket( UDPSOCK, PF_INET, SOCK_DGRAM, getprotobyname('udp') ) or die " +socket: $!"; select( ( select(UDPSOCK), $|=1 )[0] ); # no suffering from buffering setsockopt( UDPSOCK, SOL_SOCKET, SO_REUSEADDR, 1 ) or die "setsockopt SO_REUSEADDR: $!"; #setsockopt( UDPSOCK, SOL_SOCKET, SO_BROADCAST, 1 ) # or die "setsockopt SO_BROADCAST: $!"; # my $broadcastAddr = sockaddr_in( $udp_port, INADDR_BROADCAST ); my $broadcastAddr = sockaddr_in( $udp_port, INADDR_ANY ); bind( UDPSOCK, $broadcastAddr ) or die "bind failed: $!\n"; my $input; while( my $addr = recv( UDPSOCK, $input, 4096, 0 ) ) { print "$addr => $input\n"; }
Client.pl
#! /usr/bin/perl use warnings; use strict; use Socket qw(:all); use POSIX ":sys_wait_h"; socket( SOCKET, PF_INET, SOCK_DGRAM, getprotobyname("udp") ) or die "Error: can't create an udp socket: $!\n"; select( ( select(SOCKET), $|=1 )[0] ); # no suffering from buffering my $broadcastAddr = sockaddr_in( 9999, INADDR_BROADCAST ); setsockopt( SOCKET, SOL_SOCKET, SO_BROADCAST, 1 ); send( SOCKET, "a" x 4096, 0, $broadcastAddr ) or die "Error at sendding: $!\n"; close SOCKET;
Does anybody know what I'm doing wrong?
My friend intends to use broadcasts to announce a new server going online to a central service. He won't misuse it. I am interested in this topic, because I know a little bit about TCP/IP, but have hardly any knowledge about UDP and broadcasts.
Best regards,
perl -e "s>>*F>e=>y)\*martinF)stronat)=>print,print v8.8.8.32.11.32"
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: UDP-Broadcast with socket
by zentara (Archbishop) on Jan 12, 2009 at 22:29 UTC | |
Re^3: UDP-Broadcast with socket
by shmem (Chancellor) on Jan 13, 2009 at 15:40 UTC |
In Section
Seekers of Perl Wisdom