in reply to Intercepting UDP broadcasts

This is probably no help whatsoever, but your code works just fine for me. RedHat 9, perl 5.8.0

Perhaps if recv() is blocking you should use IO::Select? (rampant straw grasping here :)

#!/usr/bin/perl use strict; use warnings; use IO::Socket::INET; use IO::Select; my $sel = IO::Select->new; my $port = getservbyname 'bootps', 'udp'; my $socket = IO::Socket::INET -> new (LocalPort => $port, Broadcast => 1, Proto => 'udp') or die "Failed to bind to socket: $@"; $sel->add($socket); my $n = 10; my $mess; while (1) { my @r = $sel->can_read($n); unless (@r) { print "Nothing after $n seconds\n"; next; } $socket -> recv ($mess, 1024); print "Saw a bootp request.\n"; } __END__