I didn't know where to begin, so I pretty much rewrote them X_X It was basically overly complex. If you wonder why I made a certain change, feel free to ask.
I did find it odd that "12" is hardcoded in the server (as opposed to being looked up by $process_name, or specified by the client), but "cs2" isn't.
server.pl
#!/usr/bin/perl
# die commands probably need to be replaced with something else.
use strict;
use warnings;
use IO::Socket;
my $EOL = "\015\012";
my $listen_sock = new IO::Socket::INET (
LocalAddr => '127.0.0.1', ###
LocalPort => '8888',
Proto => 'tcp',
Listen => 1,
Reuse => 1,
) or die("Could not create socket: $!\n");
my $client_sock = $listen_sock->accept()
or die("Error accecpting connnection: $!\n");
{
local $/ = $EOL;
my $incoming;
while (defined($incoming = <$client_sock>)) {
chomp($incoming);
die("Received nothing.\n") unless length $incoming;
my $command;
($command, $incoming) = split /\s+/, $incoming, 2;
if ($command eq "check") {
my $process_name = $incoming;
die("check: Bad process name.\n") unless $process_name =~ /^\
+w+$/;
# my $num_processes = grep { /$process/ } `ps -ef`;
my $num_processes = int(rand()*24); ###
print $client_sock ($num_processes >= 12 ? "up" : "down"), $E
+OL;
next;
}
die("Bad command $command.\n");
}
}
close($client_sock);
close($listen_sock);
client.pl
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
my $EOL = "\015\012";
my $mpts;
### Until I get cgi working.
open OUT, "> testpage.html"
or die("Unable to open output file: $!\n");
select(OUT);
if (0) ###
{
local *HEADER;
open HEADER, "< 1.html"
or die("Unable to open header file: $!\n");
print while (<HEADER>);
close HEADER;
}
my $sock = new IO::Socket::INET(
# PeerAddr => '53.230.116.97',
PeerAddr => '127.0.0.1', ###
PeerPort => '8888',
Proto => 'tcp',
) or die("Error creating connnection: $!\n");
for (1..20) {
my $command = "check cs2";
print $sock $command, $EOL;
local $/ = $EOL;
my $reply = <$sock>;
die("Lost connection to server.\n") unless defined $reply;
chomp($reply);
if ($reply eq "up") {
print STDERR "up\n";
print "<img src=\"./cs2up.gif\">\n";
$mpts++;
} elsif ($reply eq "down") {
print STDERR "down\n";
print "<img src=\"./cs2down.gif\">\n";
} else {
die("Bad reply $reply\n");
}
sleep(1);
}
close($sock);
close(OUT);
|