#!/usr/bin/perl
use Socket;
require "getopts.pl";
$sleeptime = .1;
&Getopts("H:p:c:s:");
if($opt_s) {
$sleeptime = $opt_s;
}
$hostname = "localhost";
if($opt_H) {
$hostname = $opt_H;
}
$port = "2427";
if($opt_p) {
$port = $opt_p;
}
$sockaddr = "S n a4 x8";($name,$aliases,$proto) = getprotobyname('udp');
chop($local_hostname = `hostname`);
($name,$aliases,$type,$len,$myaddr) = gethostbyname($local_hostname);
($name,$aliases,$type,$len,$broadaddr) = gethostbyname($hostname);
$me = pack($sockaddr,PF_INET, 7000, $myaddr);
$them = pack($sockaddr,PF_INET, $port, $broadaddr);
socket(S, PF_INET, SOCK_DGRAM, $proto) || die $!;
bind(S, $me) || die $!;
open(F, $ARGV[0]) or die "can't open $ARGV[0] $!";
while(<F>) {
if($_ =~ /^\-\-\-\- start \-\-\-\-/) {
$msg = "";
$flag = 1;
} elsif ($_ =~ /^\-\-\-\- end \-\-\-\-/) {
print "$msg";
if($opt_c) {
$win = '';
vec($win, fileno(S),1) = 1;
for($i = 0; $i < $opt_c ; $i++) {
if(select(undef, $wout=$win, undef, undef)) {
print ".";
defined(send(S,$msg,0,$them)) || die "failed: $! $?";
} else {
die "select problem!";
}
# select undef, undef, undef, $sleeptime;
}
} else {
send(S,$msg,0,$them) || die $!;
}
$flag = 0;
} elsif ($flag == 1) {
$msg .= $_;
}
}
close(F);
syntax highlighted by Code2HTML, v. 0.9.1