Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скачать бинарный файл по http. Используя только лишь сокеты. 
:(
    Опции темы
444ert666
Дата 7.7.2008, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 9.5.2006

Репутация: нет
Всего: нет



Здравствуйте!
Хочу попросить сразу прощения, за вероятный тупизм с моей стороны. Но ничего на форуме способного помочь мне не нашел, есть примеры но все с использованием компонент билдера или визуал судии(у мну компилятор gcc под win). В прчинципе, задача, на первый взгляд тривиальна, отослать через сокет http запрос, получить ответ, обработать заголовки ответа, убрать их из буфера тцп, далее считать из него количество байт, указанное в поле Content-length, и записать в файл.
Но не получается:((((.... с текстовыми файлами все проходит, с бинарными не фига:( - в файл пишется только три каких то левых байта:(

вот код:
Код

.....
 sprintf((char *)buff1,"%s%s%s%s%s%s",
"GET ",
 path,
" HTTP/1.1\r\n",
"Host: ",
host,
"\r\n\r\n");
send (my_sock, (const char *)buff1,strlen(buff1), 0 ) ; 
nsize=recv(my_sock,&buff[0],512,MSG_PEEK);       //просматриваю заголовки ответа сервера
page=parsePage(&buff[0]);    //отделяю заголовки от тела, также получаю значение Content-length
nsize=recv(my_sock,&buff[0],strlen(page.headers)+strlen("\r\n\r\n"),0); //считываю из буфера данные длиною: длина заголовков(page.headers) ну и две новых строки, в итоге у меня в буфере, 
//остается лишь тело файла, правильно?     
char * buffFile=(char *)malloc(page.cLength);     //выделяю память для хранения файла
nsize=recv(my_sock,buffFile,page.cLength,0); //считываю данные из буфера длиною: page.cLength - значение Content-length, то есть все содержимое принятого файла.
f = fopen("upload.exe","wb"); // далее записываю все полученное пишу в файл
fprintf( f, buffFile );
fclose(f);    


Никак не пойму, где я заблуждаюсь.... 
запутался уже:(
Заранее спасибо!

P.S. не судите строго, только начинаю, изучение этого, без сомнений, самого рульного языка.
PM MAIL   Вверх
antoniobanderas
Дата 7.7.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 4.10.2006

Репутация: нет
Всего: нет



код parsePage кинь
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0372 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.