use IO::Socket::INET; use IO::Select; use strict; use warnings; my @sockets; my $select = new IO::Select(); my $packet_rcvd; for ($ARGV[0] .. $ARGV[1]) { my $socket = new IO::Socket::INET(Proto => "udp", LocalPort => $_, LocalAddr => "localhost") || die "failed to establish socket for port $_"; print "udp socket created for port $_\n"; $select->add($socket); } print "all socket created\n"; while (1) { my @sockets = $select->can_read(10); for my $socket (@sockets) { my $peer = $socket->recv($packet_rcvd, 50); print "packet $packet_rcvd recvd at port " . $socket->sockport() . "\n"; $socket->send("abcdefg", 0, $peer); } print $select->count(), "\n"; }