perl ソケット

サーバースクリプト

#クライアントからの文字入力を受けてそれをそのまま返すサーバースクリプト
#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();

クライアントスクリプト

#文字入力をサーバーに送るクライアントスクリプト
#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();

コマンドプロンプトウインドウを2つ起動し、まずはサーバースクリプトを実行する。
別のコマンドラインからクライアントスクリプトを実行するとこのスクリプトがサーバーに接続される。クライアント側で文字列を入力しenterキーを押すとサーバー側にその文字列が表示される。

実行結果

サーバー側

$ perl echoserver.pl 
受理:from client
受理:hello

クライアント側

$ perl echoclient.pl 
from client
hello
QUIT

初めてのPerl 第6版

初めてのPerl 第6版