9.1 ソケット
- いままでの章は他のPerl初心者本にも載ってたけど、このソケットつかってのプログラミングは初めて。
- めっちゃ新鮮
use strict;
use warnings;
use IO::Socket;
my $server_socket = new IO::Socket::INET(
LocalPort => '10000',
Proto => 'tcp',
Listen => 5,
Reuse => 1
);
unless ($server_socket) {
print "Socket Error:$!\n";
};
my $client_socket = $server_socket->accept();
while ( <$client_socket> ) {
print $_;
}
$client_socket->close();
$server_socket->close();
use strict;
use warnings;
use Data::Dumper;
use IO::Socket;
my $client_socket = new IO::Socket::INET(
PeerAddr => 'localhost',
PeerPort => '10000',
Proto => 'tcp',
TimeOut => 5,
);
unless ($client_socket) {
print "Socket Error:$!\n";
}
my $string;
while ( $string = <STDIN> ) {
if ( $string =~ /^QUIT/ ) {
last;
}
print $client_socket "$string";
}
$client_socket->close;
- ターミナル二つ開いて、clientで入力した文字がそのままserver側で表示されているのに感動する
- ちなみに、表示したかった文字が全部一律に「string」ってなって表示される事があって、ずっとserver側のスクリプト見てたんだけど、原因はclient側のスクリプト、という事が・・・
- server側とclient側、二つ見ないといけないのは面倒ですな
use strict;
use warnings;
use Data::Dumper;
use IO::Socket;
my $server_socket = new IO::Socket::INET(
LocalPort => 10000,
Proto => 'tcp',
Listen => 5,
Reuse => 1,
);
unless ($server_socket) {
print "Error :$!\n";
}
my $client_socket = $server_socket->accept();
$| = 1;
while (<$client_socket>) {
if ( $_ =~ /PING/ ) {
print "PONG\n";
}
else {
print "$_";
}
}
$client_socket->close();
$server_socket->close();
use strict;
use warnings;
use Data::Dumper;
use IO::Socket;
my $url = 'http://www.yahoo.co.jp/index.html';
my $host;
my $file;
if ( $url =~ /http:\/\/([^\/]+)(\/.*)/ ) {
$host = $1;
$file = $2;
}
else {
print "Parse Error\n";
}
my $client_socket = new IO::Socket::INET(
PeerAddr => $host,
PeerPort => 'http',
Proto => 'tcp',
TimeOut => 5,
);
unless ($client_socket) {
print "Error :$!\n";
}
print "$host $file" . "\n";
print $client_socket "HEAD $file HTTP/1.0\n\n";
while (<$client_socket>) {
if ($_ =~ /Server/){
print $_;
}
}
$client_socket->close();