#!/usr/athena/bin/perl
require 'sys/socket.ph';

($port) = @ARGV;
$port = 4005 unless $port;

$sockaddr = 'S n a4 x8';

($name, $aliases, $proto) = getprotobyname('udp');
if ($port !~ /^\d+$/) {
    ($name, $aliases, $port) = getservbyport($port, 'udp');
}

print "Port = $port\n";
chop($myname = `hostname`);
($name, $aliases, $type, $len, $meaddr) = gethostbyname($myname);
$this = pack($sockaddr, &AF_INET, $port, $meaddr);

select(NS); $| = 1; select(stdout);

socket(S, &AF_INET, &SOCK_DGRAM, $proto) || die "socket: $!";
bind(S,$this) || die "bind: $!";
# listen(S,5) || die "connect: $!";

select(S); $| = 1; select(stdout);

$con = 0;
print "Listening for connection 1....\n";
for(;;){
$peeraddr = recv(S,$data, 1, 0);
($af,$port,$inetaddr) = unpack($sockaddr,$peeraddr);
@inetaddr = unpack('C4',$inetaddr);
print("Recieved $data\n");

if($data eq "\0" || $data eq "\n"){
	&output($request);
	$request ='';
}
else{
$request .= $data;
}


#send(S, "localack\n", 0, $peeraddr);
}

sub output {
	local($cmd) = @_;

	print("Got: $cmd\n");
}

sub ack {
	local($ack) =@_;
	send(S, "$ack\n", 0, $peeraddr);
}

