Address already in useを回避する

  • Address already in useを起こしてみる
    • 以下のサーバースクリプトを起動
    • telnet localhost 9000としてアクセスする
    • 待ち受け状態になるので適当な文字を入れてEnter
    • コネクションが切れる。
    • サーバースクリプトをCtrl+Cで落とす。
    • 再度起動しようとすると Address already in use
use strict;
use warnings;
use IO::Socket::INET;

my $s = IO::Socket::INET->new(
        LocalAddr => "localhost",
        LocalPort => 9000,
        ) or die $!;

$s->listen or die $!;

while (my $c = $s->accept) {
        my $q = $c->getline;
        print "$q\n";
        $c->print("hello\n");
        $c->close;
}
    • ReuseAddr => 1 を設定する。Reuseは推奨されない。