У меня есть два сценария Perl, которые должны выполнять следующую работу:
Сервер запускается и ожидает подключения клиента.Клиент подключается и мгновенно отправляет файл XML.Сервер читает файл XML и запускает пару потоков.Каждый поток получает сокет $ client в качестве параметра, и как только он закончил, он должен отправить вывод обратно клиенту.Между тем клиент ожидает поступления сообщений, он должен печатать эти сообщения в командной строке.
Теперь моя проблема в том, что я не знаю, как реализовать последнюю часть.Я попытался использовать метод приема, но обе программы застряли, если я это сделаю.
Сторона сервера:
my @threads;
$server = IO::Socket::INET->new(
Listen => 1,
LocalAddr => 'localhost',
LocalPort => '8080',
Proto => 'tcp'
) or die "Can't crete socket!\n";
$client = $server->accept;
open FILE, ">".$filename or die "Can't open file!\n";
while (<$client>) {
print FILE $_;
}
close FILE;
# READ FILE AND DO SOME OTHER STUFFS
push @threads, threads ->create(\&subroutine1, $parameters, $client);
# OTHER STUFFS
push @threads, threads ->create(\&subroutine2, $parameters, $client);
# MORE THREADS...
sub subroutine1 {
my @pars= @_;
my $parameters = $pars[0];
my $client = $pars[1];
my $sub1 = `perl other_script.pl $parameters`;
$client->send($mem);
}
Сторона клиента:
my $server = IO::Socket::INET->new(
PeerAddr => 'localhost',
PeerPort => '8080',
Proto => 'tcp'
) or die "Can't create client socket!\n";
open FILE, $filename;
while (<FILE>) {
print $server $_;
}
close FILE;
# HOW DO I READ INFORMATIONS?
$server->close();