9ϤΥץ륳
---------------------
ܼʥڡֹ
P204
P205
P206
P207
P208
P210
---------------------

P204
# ʸϤ򤽤Τޤ֤Сץ
#  echoserver.pl

# ⥸塼λ
use IO::Socket;

# åȥ֥Ⱥ
$server_socket = new IO::Socket::INET (
                        LocalPort => '10000',
                        Proto => 'tcp',
                        Listen => 5,
                        Reuse => 1 );
unless ($server_socket) {
  print "Socket Error:$!\n";
}

# Ե
$client_socket = $server_socket->accept( );

# 饤ȤϤɽ
while ($string = <$client_socket>) {
  print ":$string";
}

# åȤĤ
$client_socket->close( );
$server_socket->close( );

P205
# ʸϤ򥵡С륯饤ȥץ
#  echoclient.pl

# ⥸塼λ
use IO::Socket;

# åȥ֥Ⱥ
$client_socket = new IO::Socket::INET (
                        PeerAddr => 'localhost',
                        PeerPort => '10000',
                        Proto => 'tcp',
                        TimeOut => '5' );
unless ($client_socket) {
  print "Socket Error:$!\n";
}

# Ϥ򥵡С
while ($string = <STDIN>) {
  if ($string =~ /^QUIT/) {
    # QUITȤʸǻϤޤϤȽλ
    last;
  }
  print $client_socket "$string";
}

# åȤĤ
$client_socket->close( );

P206
# ñʲʸΥСץ
#  reverseserver.pl

# ⥸塼λ
use IO::Socket;

# åȥ֥Ⱥ
$server_socket = new IO::Socket::INET (
                        LocalPort => '10000',
                        Proto => 'tcp',
                        Listen => 5,
                        Reuse => 1 );
unless ($server_socket) {
  print "Socket Error:$!\n";
}

# 饤Ȥ
do {
  # Ե
  $client_socket = $server_socket->accept( );
  print "Connect\n";
  while ($string = <$client_socket>) {
    # Ե
    chomp($string);
    # ʸ֤(split//оʸ1ʸĤ˶ڤ)
    print $client_socket reverse(split(//, $string)), "\n";
  }
  $client_socket->close( );
  print "Close\n";
} until (0);

# åȤĤ
$server_socket->close( );

P207
# ñʲʸΥ饤ȥץ
#  reverseclient.pl

# ⥸塼λ
use IO::Socket;

# åȥ֥Ⱥ
$client_socket = new IO::Socket::INET (
                        PeerAddr => 'localhost',
                        PeerPort => '10000',
                        Proto => 'tcp',
                        TimeOut => '5' );
unless ($client_socket) {
  print "Socket Error:$!\n";
}

# Ϥ򥵡С
while ($string = <STDIN>) {
  if ($string =~ /^QUIT/) {
    # QUITȤʸ󤬤Ƚλ
    last;
  }
  print $client_socket "$string";

  # СνϤɽ
  $receive = <$client_socket>;
  print $receive;
}

# åȤĤ
$client_socket->close( );

P208
# ʸΥСץ (forkȤäʣΥ饤Ȥ򥵥ݡ)
#  reverseserver_fork.pl

# ⥸塼λ
use IO::Socket;

# ҥץνλν
$SIG{CHLD} = sub { wait( ) };

# åȥ֥Ⱥ
$server_socket = new IO::Socket::INET (
                        LocalPort => '10000',
                        Proto => 'tcp',
                        Listen => 5,
                        Reuse => 1 );
unless ($server_socket) {
  print "Socket Error:$!\n";
}

# 饤Ȥ
do {
  $client_socket = $server_socket->accept( );
  # Ե
  if ($pid = fork( )) {
    # ƥץϤԵ
  }
  elsif (defined $pid) {
    while ($string = <$client_socket>) {
      # Ե
      chomp($string);
      # ʸ֤(split//оʸ1ʸĤ˶ڤ)
      print $client_socket reverse(split(//, $string)), "\n";
    }
    # ҥץϤǽ
    exit;
  } else {
    die "forkǤޤ: $!\n";
  }
} until (0);

# åȤĤ
$server_socket->close( );


P210
# Web֥饦ץ
#  browser.pl

# ⥸塼λ
use IO::Socket;

# URL
print "URLꤷƤ: ";
$url = <STDIN>;

# URLۥ̾ȥեѥʬ
chomp($url);
if ($url =~ /http:\/\/([^\/]+)(\/.*)/) {
  $host = $1;
  $file = $2;
} else {
  die "URLˤбƤޤ\n";
}

# åȥ֥Ⱥ
$client_socket = new IO::Socket::INET (
                        PeerAddr => $host,
                        PeerPort => 'http',
                        Proto => 'tcp',
                        TimeOut => '5' );
unless ($client_socket) {
  print "Socket Error:$!\n";
}

# Ϥ򥵡С
print "$host $file" . "\n";
print $client_socket "GET $file HTTP/1.0\n\n";

# Ϥɽ(ʣԤ֤äƤΤǡ꽪ޤǷ֤)
while ($receive = <$client_socket>) {
  print $receive;
}

# åȤĤ
$client_socket->close( );
