Re: Не могу скачать файл через Интернет (сокеты)
От: Roman Odaisky Украина  
Дата: 25.08.07 16:57
Оценка:
Здравствуйте, Иван, Вы писали:

И>Всем добрый день! Вот желаю написать программку для скачивания с серверов файлов по желаемому списку, но что-то не особо получается, виснет на этапе чтения сокета, при этом подключается нормально. Просьба особо не бить, в С новичек. На данный момент там используется буфер по 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
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.