Клиент-сервер. Клиент подключается и передает команду. Сервер ее выполняет и посылает ответ. Клиент отключается.
Сервер
| Код | #!/usr/bin/perl
use IO::Socket;
my $quit = 0; $SIG{INT} = sub { $quit++ }; my $port = shift || 3434; my $sock = IO::Socket::INET->new( Listen => 20, LocalPort => $port, Timeout => 60*60, Reuse => 1 ) or die "Can`t create socket: $@\n";
warn "Waiting for incoming connections on port $port...\n";
while (!quit) {
next unless my $session = $sock->accept; my $peer = gethostbyaddr($session->peeraddr,AF_INET) || $session->peerhost; my $port = $session->peerport; warn "Connection from [$peer,$port]\n";
my $command = <$seesion>; open (COMMANDFH, "$command |") or die "Can`t open $command: $!";
while ($msg_out = <COMMANDFH>) { print $seesion $msg_out; }
warn "Connection from [$peer,$port] finished\n"; close $session;
}
print STDERR; close $sock;
|
Клиент
| Код | #!/usr/bin/perl
use IO::Socket;
my $host = shift || localhost; my $port = shift || 3434; my $socket = IO::Socket::INET->new("$host:$port") or die $@;
my $msg_out = STDIN->getline; print $socket $msg_out; while (defined (my $msg_in = <$socket>)) { print $msg_in; } $socket->close or warn $@;
|
|