Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Renat Araslanow                      2:5011/119     21 Jan 2001  08:24:40
 To : All
 Subject : сокеты
 -------------------------------------------------------------------------------- 
 
 
 хотелось интерактивный скрипт для общения с удалённым сервером. сразу скажу
 ОС w2000 активперл 620
 если выделенную ниже строчку закоментировать то скрипт нормально передаёт на
 экран то что даёт сервер. если её оставить раскоментированной - скрипт
 благополучно заканчивается /_=(_/
 perlipc - читал - там пример того же но с форком - у меня не работает
 как считавать stdin и передавать его на сервер? помогите плиз...
 да, хотелось бы сделать не используя внешних модулей - хотя если это невозможно 
 - так и скажите. /_=(_/
 
 #!/usr/bin/perl -w
     #use strict;
     use IO::Handle;
     use IO::Socket;
     use IO::Select;
 
     $|=1;
     my ($host, $port, $kidpid, $handle, $line,$sel);
     unless (@ARGV == 2) { die "usage: $0 host port" }
     ($host, $port) = @ARGV;
     # create a tcp connection to the specified host and port
     $hand = IO::Socket::INET->new(Proto     => "tcp",
                                     PeerAddr  => $host,
                                     PeerPort  => $port)
            or die "can't connect to port $port on $host: $!";
     $hand->autoflush(1);              # so output gets there right away
     $sel= new IO::Select( $hand );
     print STDERR "[Connected to $host:$port]\n";
     $in1=new IO::Handle;
 
 >    $in1->fdopen(fileno(STDIN),"r");
 
     $sel->add($hand);
     $sel->add($in1);
     print $sel->count;
     print "added\n";
     while(@ready=$sel->can_read)
     {
         print "here we are!\n";
         foreach $fh (@ready)
         {
             if($fh==$hand)
             {
                 if (defined ($line=<$fh>))
                 {
                     print $line;
                 }
             }
             else
             {
                 print "in else\n";
                 #Здесь хочй брать с STDIN и печатать в STDOUT
                 #но сюда не доходит
             }
         }
         sleep(2);
     }
 #exit1:
     undef $in1;
     print "succesfully exiting!";
                     [TEAM Чайник с программным управлениемЪ]
             [Преждевременная оптимизация -- корень всех зол Д. Кнут]
 --- спасибо фиpме AMD за Celeron от фирмы intel :-)
  * Origin: BBS in DEN! DOWN: 644-888 23-07 (2:5011/119)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 сокеты   Renat Araslanow   21 Jan 2001 08:24:40 
Архивное /ru.perl/22793a6a4a08.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional