Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2009, 12:01   #1
TpyHT
Новичок
Джуниор
 
Регистрация: 04.05.2009
Сообщений: 1
По умолчанию Ответ web-сервера браузеру - изображение

Здравствуйте! Помогите пожалуйста с решение проблемы, весь интернет перерыл не могу найти.

Вообщем пишу веб-сервер, реализованный с помощью сокетов. Открываю сокет на 80 порту, слушаю запросы браузера, обрабатываю их о отсылаю ответы, с хтмл страницами проблем никаких нет, основная проблема с отправкой изображений.
Вот код отправки jpg изображения на запрос браузера.

Код:
char bufi[100000];
memset(otvet,0,sizeof(otvet));
memset(bufi,0,sizeof(bufi));
strcat(otvet, "HTTP/1.1 200 OK\n");
strcat(otvet, "Content-Type: image/jpeg");
strcat(otvet, "Content-Length: 3289\n");
strcat(otvet, "Connection: close\n");
strcat(otvet, "\n");
if(!(f=fopen(serdest, "rb")))
{
         goto laba_notfound;
}
fseek(f,0,SEEK_END);
fsize= ftell(f);
rewind(f);
err=fread(bufi,1,fsize,f);
strcat(otvet, bufi);
err=send(brows,otvet,sizeof(otvet),0);
Что я делаю не так??? Если не сложно пишите в аську 877740 или сюда. Спасибо.

Последний раз редактировалось MaTBeu; 05.05.2009 в 17:03.
TpyHT вне форума Ответить с цитированием
Старый 04.05.2009, 22:05   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Из того, что сразу видно: "Content-Type: image/jpeg" - \n нет в конце.
Вообще в HTTP для перевода строки надо использовать \r\n.

Последний раз редактировалось Somebody; 04.05.2009 в 22:25.
Somebody вне форума Ответить с цитированием
Старый 05.05.2009, 11:53   #3
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

да и вообще, функция send возвращает количество РЕАЛЬНО отправленных данных (или ошибку). а ушли ли все данные или нет, вам надо проверять самому.
vvviperrr вне форума Ответить с цитированием
Старый 05.05.2009, 22:34   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Сообщение от vvviperrr Посмотреть сообщение
да и вообще, функция send возвращает количество РЕАЛЬНО отправленных данных (или ошибку). а ушли ли все данные или нет, вам надо проверять самому.
В общем да. Но при работе с блокирующими сокетами она должна всё передать до того, как закончится.
Цитата:
If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode. On nonblocking stream oriented sockets, the number of bytes written can be between 1 and the requested length, depending on buffer availability on both the client and server computers.
Somebody вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как принять ответ от сервера? (делфи) zotox Помощь студентам 2 11.11.2008 13:49
Какой ответ сервера в xmlHttp.responseText mogul82 PHP 6 02.11.2008 10:12
TClientSocket ответ от сервера JRcoker Работа с сетью в Delphi 10 02.10.2008 01:55
Кто может написать плагин к браузеру? Seomaster Фриланс 2 22.01.2008 18:30
Вопрос по браузеру Stanislav Общие вопросы Delphi 12 19.11.2007 18:51