Здравствуйте, Иван, Вы писали:
И>Всем добрый день! Вот желаю написать программку для скачивания с серверов файлов по желаемому списку, но что-то не особо получается, виснет на этапе чтения сокета, при этом подключается нормально. Просьба особо не бить, в С новичек. На данный момент там используется буфер по BUFSIZ, то есть более этого размера не скачает, но меня сейчас не это волнует...
Э-э… А где ты запрос в сокет пишешь?! "GET /uri HTTP/1.1\nHost:
www.some.host" или что-то вроде?
И>Кроме этого, мне непонятно, если сервер требует авторизации — как быть с этим?
Выкинуть велосипед и использовать libcurl. А лучше, перейти на более другой язык — зачем тебе C для такой задачи? Например, так:
use Net::HTTP;
my $s = Net::HTTP->new(Host => "www.perl.com") || die $@;
$s->write_request(GET => "/", 'User-Agent' => "Mozilla/5.0");
my($code, $mess, %h) = $s->read_response_headers;
while(1)
{
my $buf;
my $n = $s->read_entity_body($buf, 1024);
die "read failed: $!" unless defined $n;
last unless $n;
print $buf;
}
А то и так:
#!/bin/sh
xargs wget <ulist