надо мне консоль некой программы вывести через сокет для клиентов.
Написал программу:
#!/usr/bin/perl -w
use IPC::Open2;
use IO::Socket;
use strict;
my $PORT = 9000;
my ($pid1,$line,$server,$client);
$server = IO::Socket::INET->new( Proto => 'tcp',
LocalPort => $PORT,
Listen => SOMAXCONN,
Reuse => 1);
die "can't setup server" unless $server;
print "[Server $0 accepting clients]\n";
my $pid = open2(*RD, *WR, 'bash');
if ($pid1 = fork) {
close(RD);
while($client = $server->accept()){
$client->autoflush(1);
while (defined($line = <$client>)) {
print "[$line ] <-\n";
print WR "$line\n";
}
close $client;
}
close(WR);
waitpid($pid1,0);
} else {
die "cannot fork: $!" unless defined $pid;
close(WR);
while(<RD>){
print "<child $_ >\n";
}
}
запускаю телнет, ввожу команды:
[vilfred@mobile100 devel]$ telnet localhost 9000
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
ls
ls -la
вывод сервера, к которому подсоединяюсь клиентом:
[vilfred@mobile100 devel]$ perl zxc.pl
[Server zxc.pl accepting clients]
[ls
] <-
: command not found
[ls -la
] <-
ls: неверная опция --
Попробуйте `ls --help' для получения более подробного описания.
я чего-то вообще глобально не воткнул, что не так-то?? там где то
теряется перевод каретки, причем так глобально, что вместе с ним
даже и сама команда, передаваемая из клиента :) Короче, непонятно вобщем.


Ответ на:
комментарий
от anonymous

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [perl] проброс проги в сокет (2008)
- Форум perl обработка stdout and stdin сторонней проги (2006)
- Форум Perl: проблема совместимости «use Socket;» (2004)
- Форум Задание на Stepik по Perl. Никак не могу понять, где загвоздка. HELP. (2020)
- Форум troubles with perl & tcp sockets (2006)
- Форум Perl & win32 (2005)
- Форум Perl. Сокеты. (2007)
- Форум fork в perl`е (2006)
- Форум Perl + FastCGI + nginx (2009)
- Форум клиент и сервер на Перл (2009)