#!/usr/bin/perl -w # # udp client which sends a query, waits for timeout # seconds and prints response if obtained else cribs. # use strict; use IO::Socket; use IO::Select; my $srvhost = '10.1.1.111'; my $srvport = '3333'; my $client = new IO::Socket::INET( PeerAddr => $srvhost, PeerPort => $srvport, Proto => 'udp'); my $sel = new IO::Select($client); my @ready; my $sock; my $request = "e8aa9e somequery 123"; my $maxread = 1024; while (1) { if (! defined($client->send($request))) { die "failed to send req\n"; } print "sent $request\n\n"; @ready = $sel->can_read(5); if (! scalar(@ready)) { print "Response Timed out\n"; } else { $sock = $ready[0]; if (! sysread($ready[0], $response, $maxread)) { print "recv failed :$!\n"; } else { print "got response $response\n"; } } sleep 3; }