- 论坛徽章:
- 0
|
有个socket监听的代码,因为特殊需要,在程序中断的时候需要做些特别的事情,但奇怪是当按下CTRL+C后程序不是立刻执行中断,而是要等一会才执行,使用的WIN XP ACTIVEPERL 5.10
代码如下
#!/usr/bin/perl
use strict;
use IO::Socket;
use POSIX qw(WNOHANG);
use POSIX ":sys_wait_h";
use constant MAX_KIDS => 30;
my $quit = 0;
my $port = $ARGV[0] || '445';
my $sock = IO::Socket::INET->new( Listen => 20,
LocalPort => $port,
Timeout => 10,
Reuse => 1)
or die "Can't create listening socket: $!\n";
warn "Starting server on port $port...\n";
$SIG{INT} = sub {
close $sock if defined $sock;
print 'o';
exit;
};
while (!$quit)
{
next unless my $session = $sock->accept;
my $peer = gethostbyaddr($session->peeraddr, AF_INET) || $session->peerhost;
my $port = $session->peerport;
print "Connection from [$peer, $port]\n";
while (<$session>)
{
print ("I get $_\n");
chomp;
}
close $session;
} |
|
|