Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вывод картинки

2.0K
11 июля 2004 года
alexora
22 / / 19.05.2003
Мне вот надо сидеть на порту и как только клиент подконектился кинуть ему в браузер картинку. Я вроде хедеры правильно передаю. Оно предлагает сохранить/открыть файл.
Если открыть то открывается картинка в редакторе, если сохранить то сохраняется на диске
А какого оно в IE не отображается ?


Заголовки для имжа такие :

HTTP/1.1 200 OK
Date: Fri, 10 Jul 2004 15:57:00 GMT
Server: My Server
Content-Length: 65201
Content-Type: image/jpg

{тут идет двоичное содержимоу имиджа}


#include "stdafx.h"
#include <winsock2.h>

#define SERVERPORT 6666

int main(int argc, char* argv[])
{
char buff[1024];
char query[1024];

WSAStartup(0x0202,(WSADATA *) &buff[0]);

SOCKET servsocket;
sockaddr_in serv_addr;
SOCKET client_socket;
sockaddr_in client_addr;

servsocket=socket(AF_INET,SOCK_STREAM,0);
if (servsocket<0) return 0;
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVERPORT);
serv_addr.sin_addr.s_addr=0;
if (bind(servsocket,(sockaddr *) &serv_addr, sizeof(serv_addr))) return 0;
if (listen(servsocket, 1)) return 0;
int client_addr_size=sizeof(client_addr);
char buffer[100000]={0};
while((client_socket=accept(servsocket, (sockaddr *) &client_addr, &client_addr_size)))
{
FILE* f = fopen("pano1.jpg","r+b");
long s = fread(buffer,1, sizeof(buffer),f);
fclose(f);

recv(client_socket,query,sizeof(query), 0);
char answer[100000] = {0};
sprintf(answer, "HTTP/1.1 200 OK\r\nDate: Fri, 17 Jul 2003 13:20:00 GMT\r\nServer: LID Server\r\nContent-Length: %i\r\nContent-Type: image/jpg\r\n\r\n",s);
send(client_socket,answer, strlen(answer),0);
send(client_socket,buffer, s,0);

::closesocket(client_socket);

FILE* f2 = fopen("c:\\log","w+b");
s = fwrite(answer,1, sizeof(answer),f2);
fclose(f2);

}
::closesocket(servsocket);
return 0;
}
527
12 июля 2004 года
pavor
275 / / 28.09.2003
Цитата:
Originally posted by alexora
Мне вот надо сидеть на порту и как только клиент подконектился кинуть ему в браузер картинку. Я вроде хедеры правильно передаю. Оно предлагает сохранить/открыть файл.
Если открыть то открывается картинка в редакторе, если сохранить то сохраняется на диске
А какого оно в IE не отображается ?


Заголовки для имжа такие :

HTTP/1.1 200 OK
Date: Fri, 10 Jul 2004 15:57:00 GMT
Server: My Server
Content-Length: 65201
Content-Type: image/jpg

{тут идет двоичное содержимоу имиджа}


#include "stdafx.h"
#include <winsock2.h>

#define SERVERPORT 6666

int main(int argc, char* argv[])
{
char buff[1024];
char query[1024];

WSAStartup(0x0202,(WSADATA *) &buff[0]);

SOCKET servsocket;
sockaddr_in serv_addr;
SOCKET client_socket;
sockaddr_in client_addr;

servsocket=socket(AF_INET,SOCK_STREAM,0);
if (servsocket<0) return 0;
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVERPORT);
serv_addr.sin_addr.s_addr=0;
if (bind(servsocket,(sockaddr *) &serv_addr, sizeof(serv_addr))) return 0;
if (listen(servsocket, 1)) return 0;
int client_addr_size=sizeof(client_addr);
char buffer[100000]={0};
while((client_socket=accept(servsocket, (sockaddr *) &client_addr, &client_addr_size)))
{
FILE* f = fopen("pano1.jpg","r+b");
long s = fread(buffer,1, sizeof(buffer),f);
fclose(f);

recv(client_socket,query,sizeof(query), 0);
char answer[100000] = {0};
sprintf(answer, "HTTP/1.1 200 OK\r\nDate: Fri, 17 Jul 2003 13:20:00 GMT\r\nServer: LID Server\r\nContent-Length: %i\r\nContent-Type: image/jpg\r\n\r\n",s);
send(client_socket,answer, strlen(answer),0);
send(client_socket,buffer, s,0);

::closesocket(client_socket);

FILE* f2 = fopen("c:\\log","w+b");
s = fwrite(answer,1, sizeof(answer),f2);
fclose(f2);

}
::closesocket(servsocket);
return 0;
}


Не совсем по теме, но что ты там творишь с WSADataz? Вроде надо

WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}

/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions greater */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */

if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}

3
12 июля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by alexora

HTTP/1.1 200 OK
Date: Fri, 10 Jul 2004 15:57:00 GMT
Server: My Server
Content-Length: 65201
Content-Type: image/jpg

{тут идет двоичное содержимоу имиджа}



Что значит "двоичное содержимое"?
Base64 ?

2.0K
12 июля 2004 года
alexora
22 / / 19.05.2003
Да я про то если в браузер "плевать" то что выше я привел, то IE предлагает сохранить или открыть другим приложением. А вот Opera, Mozilla без проблем открывает.
Вот вторая ветка, стоит почитать :
http://rsdn.ru/Forum/Message.aspx?mid=714939
6.8K
12 июля 2004 года
bezier
21 / / 26.05.2004
Цитата:
Originally posted by alexora
Да я про то если в браузер "плевать" то что выше я привел, то IE предлагает сохранить или открыть другим приложением. А вот Opera, Mozilla без проблем открывает.



Извини я немного уточню. Ты принимаешь запрос от клиента на коннект, создаёшь его и тут же высылаешь клиенту этот "проблемный" ответ, или высылаешь html файл с тегом "img", src которого в свою очередь включает запрос к твоему серверу на исходник картинки? Если я не ошибаюсь, то IE примет этот твой ответ только таким образом.

2.0K
13 июля 2004 года
alexora
22 / / 19.05.2003
стоп. с клинта шлется GET запрос на документ. я создаю хедеры для ответа и высылаю файл. Прикол в том что во всех браузерах открывается кроме IE
6.8K
13 июля 2004 года
bezier
21 / / 26.05.2004
Цитата:
Originally posted by alexora
стоп. с клинта шлется GET запрос на документ. я создаю хедеры для ответа и высылаю файл. Прикол в том что во всех браузерах открывается кроме IE


В принципе, по правилам, браузер должен принимать от сервера html. Если ты высылаешь ему что-либо иное, то тем самым ты предоставляешь ему самому выбрать как это интерпретировать: распознать картинку и сгенерировать html для её отображения (посмотри хотя бы исходники страниц в браузерах где всё получается), или принять её как любой другой файл(теоретически это правильнее - браузер ничего не должен "додумывать", весь процесс должен быть под контролем программиста).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог