File: client.pl

package info (click to toggle)
p910nd 0.97-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, buster, sid, stretch, trixie
  • size: 252 kB
  • ctags: 194
  • sloc: ansic: 1,619; sh: 211; makefile: 103; perl: 45
file content (58 lines) | stat: -rwxr-xr-x 1,283 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/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;
}