or download this
$p=shift;$a=a(shift);i(shift);socket S,2,1,6;bind S,$a;listen
S,5;undef$/;while(@ARGV&&($_="$p $a f".shift)||accept(C,S)&&($_=<C>)&&
+close
...
a{$_[0]=~/:/;pack'CxnC4x8',2,$',split'\.',$`}sub
t{socket X,2,1,6;$w=shift;if(connect X,a($w)){print X
"$p $_[0] $_[1]/$_[2]";close X}else{undef$k{$p}}}
or download this
$/=$_;$(=shift;$a=shift;i(shift);socket S,2,1,6;bind S,a($a);listen
S,5;while(@ARGV&&($_="$( $a f".shift)||accept(C,S)&&($_=<C>)&&close
...
keys%k}sub t{socket X,2,1,6;if(connect X,a($w=shift)){print X
"$( $_[0] $_[1]/$_[2]";close X}else{undef$k{$w}}}sub
e{open F,">$_[1]";print F $_[2];close F}