У меня есть базовый HTTP-сервер Perl, использующий HTTP :: Daemon .Когда я останавливаюсь и запускаю скрипт, кажется, что порт все еще прослушивается, и я получаю сообщение об ошибке, в котором говорится, что мой экземпляр HTTP :: Daemon не определен.Если я попытаюсь запустить скрипт примерно через минуту после его остановки, он будет работать нормально и сможет снова привязаться к порту.
Есть ли способ остановить прослушивание порта после завершения программы вместо необходимостиподождать, пока истечет время ожидания?
use HTTP::Daemon;
use HTTP::Status;
my $d = new HTTP::Daemon(LocalAddr => 'localhost', LocalPort => 8000);
while (my $c = $d->accept) {
while (my $r = $c->get_request) {
$c->send_error(RC_FORBIDDEN)
}
$c->close;
undef($c);
}
РЕДАКТИРОВАТЬ:
Согласно ответу DVK, я пытался позвонить $d->close()
, но все еще получаю ту же ошибку при попыткеперезапустите мой скрипт.
END { $d->close(); }
$SIG{'INT'} = 'CLEANUP';
$SIG{__WARN__} = 'CLEANUP';
$SIG{__DIE__} = 'CLEANUP';
sub CLEANUP {
$d->close();
undef($d);
print "\n\nCaught Interrupt (^C), Aborting\n";
exit(1);
}