Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Картинки по http


Автор: sidslog 14.1.2007, 14:17
Клиент  - браузер.
Пробовал отправлять : в content-type писал image/png,
в message-body отправлял собственно картинку:
Код

    FILE * f;
    f = fopen("1.png","r");
    char * buf = new char[256];
    memset(buf,0,256*sizeof(char));
    while(!feof(f)){
        fgets(buf,255,f);
        send(sRequest->socket,buf,strlen(buf),0);
    }


Браузер пишет, что картинка содержит ошибки. Может картинки по-другому надо отправлять?

Автор: ptr 14.1.2007, 15:52
Работать с картинкой нужно как с бинарным файлом:
Код

f = fopen("1.png","rb");

Автор: sidslog 14.1.2007, 16:25
Да, точно.
Но браузер файл все равно не отображает.
Отправил как text/html - вроде похоже на правду(во всяком случае в начале ‰PNG а в конце IEND®B`‚).
Весь ответ:

HTTP/1.1 200 OK
Date: Tue, 07 Nov 2006 19:03:35 GMT
Content-Type: text/html

Дальше картинка. 

Может какие - то еще хидеры нужны?

Автор: sidslog 14.1.2007, 20:04
Файл неправильно считывал. Сделал ReadFileом и все заработало

Автор: keksus 16.1.2007, 15:40
Можно и без ReadFile'а, если внимательно код писать

fgets читает строку, картинку же логичнее читать freadом

Код

size_t len = fread(buf, sizeof(char), 256, f);
send(sRequest->socket, buf, len, 0);


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)