Forum Webscript.Ru

Программирование => Perl => Тема начата: DNK от 26 Марта 2006, 16:05:30

Название: Socket
Отправлено: DNK от 26 Марта 2006, 16:05:30
Вот написал скрипт:
#!/usr/bin/perl
use IO::Socket;

open(OUT,">adres.txt");
$begin=153235;
$end=153400;
for ($i=$begin;$i<=$begin+5;$i++)
{
   if ($pid=fork())
   {
      push(@forked,$pid);
   }
   else
   {
      geting($i);
      exit;
   }
}
killall();

################################################
sub geting
{
   $id=$_[0];
   $socket = IO::Socket::INET->new(PeerAddr => \'***.***.***.***\',
                                    PeerPort => \'80\',
                                    Proto    => \'tcp\');
    print $socket "GET /put/k/skript.jsp?id=$id HTTP/1.1\\r\\n";
    print $socket "Host: host\\r\\n";
    print $socket "Authorization: Basic dXNlcnBhc3M=\\r\\n\\r\\n";
    $socket->recv($answer,1024);
    print OUT $answer;
}
################################################
sub killall
{
    foreach $pid (@forked)
    {
      chomp;
        waitpid($pid,0);
      kill("TERM" => $pid)
    }
    undef @forked;
}
################################################

Но почему то в файл ответы серва записывались не полностью. Увеличение получаемых байтов не помогло.
($socket->recv($answer,2048);)
в чем проблема, всем спасибо
Название: Socket
Отправлено: Алан от 27 Марта 2006, 14:02:12
use LWP::UserAgent;
my $ua = new LWP::UserAgent;

my $response = $ua->get("http://***.***.***.***/put/k/skript.jsp?id=$id");

if( $response->is_success ) {
     print $response->content;
} else {
     die $response->status_line;
}