ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Получение странцы содержащей ОДИН Gif
  #1  
Старый 28.02.2008, 21:55
thetuk
Новичок
Регистрация: 22.02.2008
Сообщений: 9
Провел на форуме:
90595

Репутация: 0
Question Получение странцы содержащей ОДИН Gif

Не могу разобраться в чем проблема?
-посылаю запрос серверу:
Код:
char url[] = "/pic.aspx?rand=143"; 
char host[] = "sms.mts.ru"; 
sprintf( request, "GET %s HTTP/1.1\r\nAccept: image/png, image/gif\r\nHost: %s\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\nAccept: image/gif\r\n\r\n", url, host );
-получаю ответ сервера
Код:
HTTP/1.1 200 OK
Date: Thu, 28 Feb 2008 17:40:57 GMT
Server: Microsoft-IIS/6.0
Compression-Control: whitespace
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Pragma: no-cache
Set-Cookie: ASP.NET_SessionId=f3gyvfetrwl3xvua3wl5rzff; path=/; HttpOnly
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: image/gif
Content-Length: 3726


GIF89aМ320
Вот картинка содержит 3726 байт
-далее пытаюсь ее получить
Код:
unsigned int x;
while((len=recv( s, buf, 32*10, 0))>0){
fout.open("C:/1.gif",ios::binary | ios::app);
fout.write(buf,len);
x+=len;
fout.close();
}
cout<<x<<endl;
в переменной х должно содержатся 3726 (Content-Length: 3726) байт. Но у меня получается где-то 2000+-.
???ПОЧЕМУ???
 
Ответить с цитированием

  #2  
Старый 28.02.2008, 23:44
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме:
1777055

Репутация: 347
По умолчанию

часть картинки была принята вместе с http-ответом сервера
 
Ответить с цитированием

  #3  
Старый 29.02.2008, 00:43
thetuk
Новичок
Регистрация: 22.02.2008
Сообщений: 9
Провел на форуме:
90595

Репутация: 0
По умолчанию

Цитата:
Сообщение от kez  
Потому что не судьба
Может подскажешь?
 
Ответить с цитированием

  #4  
Старый 29.02.2008, 01:17
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

прикольно 8))).....
какойто ответ сервера 8)) а потом видимо там же получают код картинки в MIME?
и чего прямо mime64 на диск "валят"????

код в студию блин.... нифика не понятно!

Во блин мучаются то не по децки..... настоящие пацаны Wininet используют 8)))

.... хакиры чистый socket ,чтоб поразмяться с mime и кровушки отдать с gzip

Последний раз редактировалось Delimiter; 29.02.2008 в 01:20..
 
Ответить с цитированием

  #5  
Старый 29.02.2008, 01:45
KPOT_f!nd
Познавший АНТИЧАТ
Регистрация: 25.08.2006
Сообщений: 1,524
Провел на форуме:
3405508

Репутация: 1745


По умолчанию

thetuk - а вообще что за это язык програм??? ))
 
Ответить с цитированием

  #6  
Старый 29.02.2008, 11:45
thetuk
Новичок
Регистрация: 22.02.2008
Сообщений: 9
Провел на форуме:
90595

Репутация: 0
По умолчанию

Цитата:
Сообщение от KPOT_f!nd  
thetuk - а вообще что за это язык програм??? ))
CPP
 
Ответить с цитированием

  #7  
Старый 29.02.2008, 12:07
thetuk
Новичок
Регистрация: 22.02.2008
Сообщений: 9
Провел на форуме:
90595

Репутация: 0
По умолчанию

Цитата:
Сообщение от Delimiter  
прикольн

Во блин мучаются то не по децки..... настоящие пацаны Wininet используют 8)))
UrLDownloadFile()?
 
Ответить с цитированием

  #8  
Старый 29.02.2008, 15:05
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

// создаём переменную session и открываем сессию ANDY
CInternetSession session( _T( "Delimiter" ), PRE_CONFIG_INTERNET_ACCESS );
// создаём переменную pServer класса CHttpConnection
CHttpConnection* pServer = NULL;
// создаём переменную pFile класса CHttpFile
CHttpFile* pFile = NULL;
//Обратите внимание, что все запросы к функциям членам WinInet классов включены в блок программы TRY.
//Это сделано так, потому что при соединении с каким либо URL есть риск неправильной ссылки,
//особенно, когда Вы полагаете, что пользователь сам печатает URL.
//Другая проблема - времена ожидания, которые возникают, когда требуемый URL в настоящее время
//неспособен обслужить подключение.
//Так же обработка WinInet исключений, которые представлены в классе
//CInternetException, является важной частью создания Internet приложения под MFC.
try
{
// функция AfxParseURL получает данные с указанного URL ( у нас m_url ) об сервере,
// объекте, типе сервиса и порте
if ( AfxParseURL( m_url, dwServiceType, strServerName, strObject, nPort ) == 0 )
{

// Устанавливаем подключение по HTTP протоклолу.
pServer = session.GetHttpConnection( strServerName, nPort );
// посылаем запрос об объекте ( strObject )
pFile = pServer->OpenRequest(
CHttpConnection::HTTP_VERB_GET, strObject, NULL, 1, NULL, NULL,
INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT | INTERNET_FLAG_DONT_CACHE
);
// Добавляем заголовок к HTTP запросу
pFile->AddRequestHeaders( _T( "Accept: */*\r\nUser-Agent: Delimiter\r\n" ) );
// посылаем запрос
pFile->SendRequest( );
DWORD dwRet; // переменная для хранения кода состояния
pFile->QueryInfoStatusCode( dwRet ); // записываем код состояния в dwRet
// вывод данных

CString strHeader; // переменная для хранения полученного заголовока запроса
pFile->QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF, strHeader); // записываем заголовок в strHeader
// вывод данных
// m_mes += "Header = ";
// m_mes += strHeader;
// если код состояния не равен 200, то выходим из функции
if( dwRet != 200 )
{
delete[] mytempbuf;
session.Close( );
return 0;
}
// ----------------------------------------------------------
// проверка выбора файла для записи
fptr=fopen(my_path,"wb");
int allRead = 0; // переменная для хранения общего числи считанных байт
int nRead = pFile->Read( mytempbuf, 1024 ); // считываем первые 1024 байта в буфер.
// переменная nRead хранит количество
// считанных байт
allRead += nRead; // обновляем общее число считанных байт
// вывод данных

// записываем буфер из nRead байт в файл
fwrite(mytempbuf,1,nRead,fptr);
// цикл считывания, пока nRead не будет равняться нулю
while ( nRead > 0 )
{
nRead = pFile->Read( mytempbuf, 1024 );
if( nRead != 0 )
{
fwrite(mytempbuf,1,nRead,fptr);
allRead += nRead;

}
}
fclose(fptr);
}
catch ( CInternetException* pEx )
{
// Если произошла ошибка в WinInet

// вывод ошибки
char szErr[1024];
pEx->GetErrorMessage( szErr, 1024 );

pEx->Delete( ); // удаление переменной класса CInternetException
if ( pFile != NULL )
delete pFile; // закрываем Internet файл
if ( pServer != NULL )
delete pServer; // закрываем сервер

delete[] mytempbuf;

Sleep(50);
return 0;

}

if ( pFile != NULL )
delete pFile; // закрываем Internet файл
if ( pServer != NULL )
delete pServer; // закрываем сервер
session.Close( ); // закрываем сессию
delete[] mytempbuf;

Последний раз редактировалось Delimiter; 29.02.2008 в 15:23..
 
Ответить с цитированием

  #9  
Старый 29.02.2008, 15:05
nc.STRIEM
Members of Antichat - Level 5
Регистрация: 05.04.2006
Сообщений: 1,066
Провел на форуме:
3493315

Репутация: 1228


Отправить сообщение для nc.STRIEM с помощью ICQ
По умолчанию

покажи как ты ответ получаеш
 
Ответить с цитированием

  #10  
Старый 29.02.2008, 15:58
thetuk
Новичок
Регистрация: 22.02.2008
Сообщений: 9
Провел на форуме:
90595

Репутация: 0
По умолчанию

Цитата:
Сообщение от nc.STRIEM  
покажи как ты ответ получаеш
char response[1024*32];
recv(s, response, 1024,0);
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ