Как скачивать программно файлы на С (сокеты)
От: Иван Россия  
Дата: 25.08.07 16:35
Оценка:
Всем добрый день! Вот желаю написать программку для скачивания с серверов файлов по желаемому списку, но что-то не особо получается, виснет на этапе чтения сокета, при этом подключается нормально. Просьба особо не бить, в С новичек. На данный момент там используется буфер по BUFSIZ, то есть более этого размера не скачает, но меня сейчас не это волнует...
Кроме этого, мне непонятно, если сервер требует авторизации — как быть с этим?

Использую реальные ссылки (программой читаются из файла ulist, в нем первая строка — пример использования логина/пароля, но данные ссылки их не должны на сервере требовать):

http://static.jetune.ru/mp3/prev/89/886180/Perilous_Times.mp3
http://static.jetune.ru/mp3/prev/8/75214/The_Final_Frontier.mp3

Это тестовые маленькие файлы на 10-15 секунд.

Собственно проект (малынькый, правда) — http://files.rsdn.ru/68697/kach.c
http://files.rsdn.ru/68697/kach.h
http://files.rsdn.ru/68697/ulist


Да, забыл сказать — проект на Линюксе (Эклипс), но с Виндой, думаю, разница небольшая...
Пожалуйста, памажите
Да пребудет в нами С-ла!
Re: Как скачивать программно файлы на С (сокеты)
От: Michael Chelnokov Украина  
Дата: 25.08.07 18:15
Оценка:
Здравствуйте, Иван, Вы писали:

И>желаю написать программку для скачивания с серверов файлов по желаемому списку,


Используй libcurl (а то и просто curl или wget).
Re: Как скачивать программно файлы на С (сокеты)
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 25.08.07 20:25
Оценка:
Здравствуйте, Иван, Вы писали:

И>Всем добрый день! Вот желаю написать программку для скачивания с серверов файлов по желаемому списку, но что-то не особо получается, виснет на этапе чтения сокета, при этом подключается нормально. Просьба особо не бить, в С новичек. На данный момент там используется буфер по BUFSIZ, то есть более этого размера не скачает, но меня сейчас не это волнует...


Вообще-то перед recv необходимо хотябы запрос отправить, а то как сервер узнает какой файл ты хочешь. recv не вернет управление пока не прочитает хотябы один байт из сокета, поэтому программа у тебя и висит.
Re[2]: Как скачивать программно файлы на С (сокеты)
От: Аноним  
Дата: 26.08.07 12:06
Оценка:
G>Вообще-то перед recv необходимо хотябы запрос отправить, а то как сервер узнает какой файл ты хочешь. recv не вернет управление пока не прочитает хотябы один байт из сокета, поэтому программа у тебя и висит.

Пример можно?
К тому же — как авторизоваться на таких серверах? Никто об этом не написал...
Re[3]: Как скачивать программно файлы на С (сокеты)
От: Michael Chelnokov Украина  
Дата: 26.08.07 13:07
Оценка: -1
Здравствуйте, Аноним, Вы писали:

А>Пример можно?

А>К тому же — как авторизоваться на таких серверах? Никто об этом не написал...

Если бы ты соизволил прочитать, что тебе было написано, то увидел бы там и примеры и авторизации и всё что тебе нужно. А читать тебе курс лекций про сетевые протоколы вообще (чтобы ты понял что ни HTTP-авторизации ни понятия HTTP-запросов ни файлов на используемом тобой уровне TCP нет) как-то лениво.
Re[4]: Как скачивать программно файлы на С (сокеты)
От: Иван Россия  
Дата: 28.08.07 07:39
Оценка:
MC>Если бы ты соизволил прочитать, что тебе было написано, то увидел бы там и примеры и авторизации и всё что тебе нужно. А читать тебе курс лекций про сетевые протоколы вообще (чтобы ты понял что ни HTTP-авторизации ни понятия HTTP-запросов ни файлов на используемом тобой уровне TCP нет) как-то лениво.

Надел очки. ГДЕ, Челноков?
Да пребудет в нами С-ла!
Re[5]: Как скачивать программно файлы на С (сокеты)
От: Michael Chelnokov Украина  
Дата: 28.08.07 10:24
Оценка: +1
Здравствуйте, Иван, Вы писали:

И>Надел очки. ГДЕ, Челноков?


В libcurl.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.