LINUX.ORG.RU

get image


0

0

Подскажите, почему не качается само изображение?

char buffer [BUFSIZ] = "GET /logo/logo.gif HTTP/1.1\r\nConnection: Close\r\nUser-Agent: Mozilla/5.0 (Unix)\r\nHost: H\r\nAccept: image/gif \r\n\r\n";
char buffer2 [BUFSIZ];
//BUFSIZ
//write(socket_fd, buffer, strlen(buffer));
write(socket_fd, buffer, BUFSIZ);
read(socket_fd, buffer2);
printf("%s\r\n Size: %d\n");
FILE * pFile;
  pFile = fopen ("out.gif","w");
  if (pFile!=NULL)
  {
    fflush (pFile);
    fputs (buffer2,pFile);
    fclose (pFile);
}

вот какой ответ я получаю...

# ./get_http
HTTP/1.1 404 Not Found
Date: Sun, 01 Jun 2008 02:44:59 GMT
Server: Apache/2.2.3 (Debian)
Content-Length: 277
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /logo/logo.gif was not found on this server.</p>
<hr>
<address>Apache/2.2.3 (Debian) Server at h Port 80</address>
</body></html>

 Size: 8192
anonymous

Re: get image

А что говорит wget про файл "http://H/logo/logo.gif"?

Deleted ()

Re: get image

И да, ...

>> char buffer [BUFSIZ] = "GET /logo/logo.gif HTTP/1.1\r\nConnection: Close\r\nUser-Agent: Mozilla/5.0 (Unix)\r\nHost: H\r\nAccept: image/gif \r\n\r\n";
Зачем тут фиксированный размер буфера?

>> //write(socket_fd, buffer, strlen(buffer));
>> write(socket_fd, buffer, BUFSIZ);
Закомментированный вариант правильней

>> read(socket_fd, buffer2);
Если компилятор тут не выпал с ошибкой, то он явно собран с libastral.so.

>> fputs (buffer2,pFile);
У тебя текст в buffer2 не завершён символом '\0'.

Deleted ()
Ответ на: Re: get image от Deleted

Re: get image

Да затупил у меня define несработал тогда, но все равно... 

если не фиксированный, то...
# gcc get_http.c -o get_http
get_http.c: В функции 'main'
get_http.c:32: ошибка: не задан размер массива для 'buffer2'


write(socket_fd, buffer, strlen(buffer));
read(socket_fd, buffer2);
вот так привильнее?
Но тогда buffer2 пустой.

А если 
write(socket_fd, buffer);
read(socket_fd, buffer2); 

то получаю ответ вроде...
HTTP/1.1 200 OK
Content-Length: 1470
......
X-Powered-By: ASP.NET
Date: Sat, 31 May 2008 15:01:54 GMT
Connection: close

GIF89a╝
как отсюда "выпарсить" GIF89a╝? именно в Си!

anonymous ()
Ответ на: Re: get image от anonymous

Re: get image

да тут всё херня полная. налицо незнание сокетов и tcp. читать, читать, читать. или зять libcurl, например, и не трахать нам мозг идиотскими вопросами.

engage ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.