mirror of
https://github.com/xcat2/xNBA.git
synced 2024-11-23 18:10:10 +00:00
59 lines
1.3 KiB
Perl
59 lines
1.3 KiB
Perl
|
#!/usr/bin/perl
|
||
|
|
||
|
# edit this to the printer hostname
|
||
|
$them = 'ken';
|
||
|
$port = 9101;
|
||
|
|
||
|
open(STDIN, "$ARGV[0]") if $#ARGV >= 0;
|
||
|
|
||
|
use Socket;
|
||
|
#use Sys::Hostname;
|
||
|
|
||
|
#$hostname = hostname;
|
||
|
|
||
|
($name, $aliases, $proto) = getprotobyname('tcp');
|
||
|
($name, $aliases, $port) = getservbyname($port, 'tcp')
|
||
|
unless $port =~ /^\d+$/;
|
||
|
|
||
|
#$thisaddr = inet_aton($hostname);
|
||
|
#defined($thisaddr) or &errexit("inet_aton: cannot resolve $hostname\n");
|
||
|
|
||
|
$thataddr = inet_aton($them);
|
||
|
defined($thataddr) or &errexit("inet_aton: cannot resolve $them\n");
|
||
|
|
||
|
socket(S, PF_INET, SOCK_STREAM, $proto) or &errexit("socket: $!\n");
|
||
|
|
||
|
#$this = sockaddr_in(0, $thisaddr);
|
||
|
#bind(S, $this) || &errexit("bind: $!\n");
|
||
|
|
||
|
$that = sockaddr_in($port, $thataddr);
|
||
|
connect(S, $that) || &errexit("connect: $!\n");
|
||
|
|
||
|
select(S); $| = 1; select(STDOUT);
|
||
|
|
||
|
$buffer = '';
|
||
|
while (1)
|
||
|
{
|
||
|
$rin = '';
|
||
|
vec($rin, fileno(S), 1) = 1;
|
||
|
$nfound = select($rout=$rin, $wout=$rin, undef, undef);
|
||
|
if (vec($rout, fileno(S), 1)) {
|
||
|
print STDERR "$buffer\n" if
|
||
|
defined($nread = sysread(S, $buffer, 8192));
|
||
|
}
|
||
|
if (vec($wout, fileno(S), 1)) {
|
||
|
$nread = read(STDIN, $buffer, 8192);
|
||
|
last if $nread == 0;
|
||
|
&errexit("write: $!\n") unless
|
||
|
defined($written = syswrite(S,$buffer,$nread));
|
||
|
}
|
||
|
}
|
||
|
close(S);
|
||
|
exit 0;
|
||
|
|
||
|
sub errexit
|
||
|
{
|
||
|
print STDERR @_;
|
||
|
exit 2;
|
||
|
}
|