9͂̃TvR[h
---------------------
ڎiy[Wԍj
P204
P205
P206
P207
P208
P210
---------------------

P204
# ͂̂܂ܕԂT[o[XNvg
#  echoserver.pl

# W[̎gp錾
use IO::Socket;

# \PbgIuWFNg쐬
$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( );

# NCAg̓͂\
while ($string = <$client_socket>) {
  print ":$string";
}

# \Pbg
$client_socket->close( );
$server_socket->close( );

P205
# ͂T[o[ɑNCAgXNvg
#  echoclient.pl

# W[̎gp錾
use IO::Socket;

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

# ͂T[o[ɑM
while ($string = <STDIN>) {
  if ($string =~ /^QUIT/) {
    # QUITƂŎn܂͂ƏI
    last;
  }
  print $client_socket "$string";
}

# \Pbg
$client_socket->close( );

P206
# ȒPȉ񕶂̃T[o[XNvg
#  reverseserver.pl

# W[̎gp錾
use IO::Socket;

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

# NCAg̓
do {
  # ҋ@
  $client_socket = $server_socket->accept( );
  print "Connect\n";
  while ($string = <$client_socket>) {
    # sL
    chomp($string);
    # 񕶂Ԃ(split//ƑΏە1ɋ؂)
    print $client_socket reverse(split(//, $string)), "\n";
  }
  $client_socket->close( );
  print "Close\n";
} until (0);

# \Pbg
$server_socket->close( );

P207
# ȒPȉ񕶂̃NCAgXNvg
#  reverseclient.pl

# W[̎gp錾
use IO::Socket;

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

# ͂T[o[ɑM
while ($string = <STDIN>) {
  if ($string =~ /^QUIT/) {
    # QUITƂ񂪂ƏI
    last;
  }
  print $client_socket "$string";

  # T[o[̏o͂Mĕ\
  $receive = <$client_socket>;
  print $receive;
}

# \Pbg
$client_socket->close( );

P208
# 񕶂̃T[o[XNvg (forkgĕ̃NCAgT|[g)
#  reverseserver_fork.pl

# W[̎gp錾
use IO::Socket;

# qvZX̏Ȉ
$SIG{CHLD} = sub { wait( ) };

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

# NCAg̓
do {
  $client_socket = $server_socket->accept( );
  # ҋ@
  if ($pid = fork( )) {
    # evZX͂ɑҋ@ɖ߂
  }
  elsif (defined $pid) {
    while ($string = <$client_socket>) {
      # sL
      chomp($string);
      # 񕶂Ԃ(split//ƑΏە1ɋ؂)
      print $client_socket reverse(split(//, $string)), "\n";
    }
    # qvZX͂ŏI
    exit;
  } else {
    die "forkł܂: $!\n";
  }
} until (0);

# \Pbg
$server_socket->close( );


P210
# WebuEUXNvg
#  browser.pl

# W[̎gp錾
use IO::Socket;

# URL
print "URLw肵Ă: ";
$url = <STDIN>;

# URLzXgƃt@CpXɕ
chomp($url);
if ($url =~ /http:\/\/([^\/]+)(\/.*)/) {
  $host = $1;
  $file = $2;
} else {
  die "URLɂ͑ΉĂ܂B\n";
}

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

# ͂T[o[ɑM
print "$host $file" . "\n";
print $client_socket "GET $file HTTP/1.0\n\n";

# o͂擾A\(sԂĂ̂ŁAI܂ŌJԂ)
while ($receive = <$client_socket>) {
  print $receive;
}

# \Pbg
$client_socket->close( );
