| |
x
# udplogger - log the data coming from the picoweb on UDP/99
require 'subs.pl' ;
$cmd_port = $ENV{"CMDPORT"} || 9999 ;
($addr,$func) = @ARGV ;
print STDERR "addr = $addr:$cmd_port\n";
$AF_INET = 2 ;
$SOCK_STREAM = 1 ;
$SOCK_DGRAM = 2 ;
$INADDR_ANY = pack("N",0) ;
$SOCKADDR = "S n a4 x8" ;
($name,$aliases,$IPPROTO_UDP) = getprotobyname('udp') ;
$| = 1 ;
$listenaddr = pack($SOCKADDR,$AF_INET,$cmd_port,$INADDR_ANY) ;
#
# sockaddr representing the picoweb we're talking to.
#
$sendaddr = pack($SOCKADDR,$AF_INET,$cmd_port,&inet_addr($addr)) ;
socket(L,$AF_INET,$SOCK_DGRAM,$IPPROTO_UDP) || die "socket: $!" ;
bind(L,$listenaddr) || die "bind: $!" ;
for (;;) {
undef $rin ;
for (;;) {
vec($rin,fileno(L),1) = 1 ;
print ".";
$n = select($rout=$rin,undef,undef,10.0) ;
if (vec($rout,fileno(L),1)) {
undef $buf;
$n = recv(L,$buf,1024,0) ;
$len = length($buf);
print "$len:$buf\n";
last if (length($buf) == 0) ;
###$hdr = unpack("S",$buf) ;
###$buffer = substr($buf,2) ;
##print "$buffer" ;
}
}
}
Back
|
|
|