programming/perl
echo server
applicationlayer
2010. 11. 29. 19:26
#!/usr/bin/perl
use IO::Socket;
sub connection {
my ($a_sock) = @_;
print $a_sock " *** TCP ECHO SRV ***\n\n\r";
while( defined($buf = <$a_sock>)) {
print $a_sock $buf;
}
exit;
}
my $sock = new IO::Socket::INET (LocalHost => 'ANY',
LocalPort => 4242,
Proto => 'tcp',
Listen => 5,
Reuse => 1);
die "Unable to create Socket, error: $!" unless $sock;
print "Tcp server running\n";
sub REAPER {
while(waitpid(-1,WNOHANG) > 0) { ; }
$SIG{CHLD} = \&REAPER;
}
$SIG{CHLD} = \&REAPER;
my $a_sock;
while (1) {
$a_sock = $sock->accept();
if (defined($a_sock)) {
my $pid = fork;
if ($pid == 0) {
connection($a_sock);
exit(0);
} else {
close($a_sock);
}
}
}
close $sock;
use IO::Socket;
sub connection {
my ($a_sock) = @_;
print $a_sock " *** TCP ECHO SRV ***\n\n\r";
while( defined($buf = <$a_sock>)) {
print $a_sock $buf;
}
exit;
}
my $sock = new IO::Socket::INET (LocalHost => 'ANY',
LocalPort => 4242,
Proto => 'tcp',
Listen => 5,
Reuse => 1);
die "Unable to create Socket, error: $!" unless $sock;
print "Tcp server running\n";
sub REAPER {
while(waitpid(-1,WNOHANG) > 0) { ; }
$SIG{CHLD} = \&REAPER;
}
$SIG{CHLD} = \&REAPER;
my $a_sock;
while (1) {
$a_sock = $sock->accept();
if (defined($a_sock)) {
my $pid = fork;
if ($pid == 0) {
connection($a_sock);
exit(0);
} else {
close($a_sock);
}
}
}
close $sock;