#!/usr/bin/perl -w # cliclient.pl - send a message to the cliserver use IO::Socket; my($sock, $server_host, $msg, $port, $ipaddr, $hishost, $MAXLEN, $PORTNO, $TIMEOUT); #$MAXLEN = 5024; $MAXLEN = 40024; #$PORTNO = 12127; $TIMEOUT = 90; $PORTNO = shift; $server_host = shift; $msg = "@ARGV"; $sock = IO::Socket::INET->new(Proto => 'udp', PeerPort => $PORTNO, PeerAddr => $server_host) or die "Creating socket: $!\n"; $sock->timeout(90); $sock->send($msg) or die "send: $!"; #eval { # local $SIG{ALRM} = sub { die "alarm time out" }; # #Activeperl has not implemented the alarm function on windows platforms # #alarm $TIMEOUT; # $sock->recv($msg, $MAXLEN) or die "recv: $!"; # #alarm 0; # 1; # return value from eval on normalcy #} or die "recv from $server_host timed out after $TIMEOUT seconds.\n"; my $rout; my $rin = ''; vec($rin, fileno($sock), 1) = 1; while (select($rout = $rin, undef, undef, 10.0)) { if ($sock->recv($msg, $MAXLEN)) { ($port, $ipaddr) = sockaddr_in($sock->peername); $hishost = gethostbyaddr($ipaddr, AF_INET); #print "Server $hishost responded ``$msg''\n"; print "$msg\n"; exit; } else { die "recv: $!"; } } print "ERROR: Received nothing from server\n";