ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

27.06.2007, 14:46
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
2 Kez млин. конечно нужен временный буфер куда читать.
я просто навренео не правильно выразился. я имел в виду троковую переменну. в которую читать данные и искать конец Http заголовка.
|
|
|

28.06.2007, 15:01
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
Http заголовок завершается двойным Crlf. дальше идут данные.
__________________
 
snow white world wide
|
|
|

01.07.2007, 12:20
|
|
Участник форума
Регистрация: 29.03.2005
Сообщений: 138
Провел на форуме: 812087
Репутация:
129
|
|
Так вроде чето получилось написать,хтмл странички принимаю без проблем,а вот с остальным rar, exe и тд. как то не важно,куда то теряются данные при передачи ((
Если не трдуно посмотрите пожалйуста исходник и моно носом ткнуть что и где неправильно))
Ногами сильно не бить , я только учусь и в этой проге куча всяких недостатков и багов,но все ранво зарание всем спасибо за все )
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include <winsock2.h>
#include <stdlib.h>
#include <stdio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
class my_socket
{
public:
SOCKET client;
my_socket();
~my_socket();
int error() {cout << "!!! Owu6ka !!!" << WSAGetLastError() << endl; return 1;}
int sends(char *byf,SOCKET client);
};
my_socket::my_socket()
{
WSAData w;
int error=WSAStartup (0x0202, &w);
if (error)
{
cout << "Neizvestna9 owubka :( " <<endl;
}
if (w.wVersion != 0x0202)
{ // íå òà âåðñèÿ ñîêåòîâ!
WSACleanup (); // âûãðóæàåì ws2_32.dll
}
cout << "Rabotaet konstructor" << endl;
}
my_socket::~my_socket()
{
WSACleanup();
cout << "Rabotaet destructor " << endl;
}
int my_socket::sends(char *buff, SOCKET client)
{
int rVal=0;
rVal = send(client,buff,strlen(buff),0);
if(rVal == SOCKET_ERROR)
{
cout <<"Failed send()"<<endl;
return 1;
}
else
{cout << " Yspewno peredalos' " << endl;}
return 0;
}
#pragma argsused
int main(int argc, char* argv[])
{
cout << "Na4alo rabotu programmu" << endl;
my_socket my;
SOCKET s;
sockaddr_in target;
s = socket (AF_INET, SOCK_STREAM, 0); // Ñîçäà¸ì ñîêåò
target.sin_family = AF_INET; // ñåìåñòâî àäðåñîâ - Èíòåðíåò
target.sin_port = htons (80); // ïîðò ñåðâåðà
target.sin_addr.s_addr = inet_addr ("127.0.0.1");
//target.sin_addr.s_addr = inet_addr ("87.224.128.10"); // IP-àäðåñ ñåðâåðà
int rVal=0;
rVal=connect(s,(LPSOCKADDR)&target, sizeof(target));
if(rVal==SOCKET_ERROR)
{
cout << "Failed connection" << endl;
return 1;
}
else {cout << " Socket yspewno soedenils9" << endl;}
my.sends("GET http://127.0.0.1/files/my.txt HTTP/1.0\r\n\r\n",s);
my.sends("User-Agent: myDownload 0.1\r\n\r\n",s);
my.sends("Accept: */*\r\n\r\n",s);
my.sends("Host: 127.0.0.1 \r\n\r\n",s);
//my.sends("Connection: close\r\n\r\n",s);
char buf_in[8];
int x;
char page_text[190000]; //òóò áóäåò õðàíèòüñÿ âñå, ÷òî ïîëó÷àåøü
FILE *tele;
if ((tele = fopen("my.txt","w+b")) == NULL)
{
cout << " Open file error " <<endl;
getch();
return -1;
}
x=recv(s,buf_in,sizeof(buf_in)-1,0);
while(x>0)
{
buf_in[x]=0;
lstrcat(page_text,buf_in);
//cout << buf_in;
//getch();
x=recv(s,buf_in,sizeof(buf_in)-1,0);
}
cout << endl << "strlen(page_text) = " << strlen(page_text) << endl;
int i;
for (i=0;i<strlen(page_text);i++)
{
if ((page_text[i]=='\r') && (page_text[i+1]=='\n') && (page_text[i+2]=='\r')&& (page_text[i+3]=='\n'))
{
cout << "Est' taka9 stroka i = " << i << endl; break;
}
}
int p,b,q;
p=i+4;
q=(strlen(page_text)-p);
char *stroka;
cout << "p = " << p<< endl;
cout << "strlen = " << q << endl;
for (b=p;b<strlen(page_text);b++)
{
cout << "b= " <<b << endl;
stroka=&(page_text[b]);
fwrite(stroka,strlen(stroka),1,tele); break;
}
closesocket(s);
my.~my_socket();
getch();
return 0;
}
//---------------------------------------------------------------------------
|
|
|

01.07.2007, 12:52
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
lstrcat(page_text,buf_in);
Б**** сколько ещё раз написать тебе что lstrcat - присоединяет СТРОКУ. Строка заканчивается нулевым символом. А у тебя содержимое рар или ехе может иметь что угодно, в том числе и нули.
И ещё, мне кажется что тебе рановато использовать КЛАССЫ. Ещё и такие бессмысленные как в данном случае. Спрашивается - нахера они тебе тут нужны?
Последний раз редактировалось begin end; 06.07.2007 в 19:59..
Причина: мат
|
|
|

06.07.2007, 18:59
|
|
Участник форума
Регистрация: 09.02.2004
Сообщений: 122
Провел на форуме: 1089794
Репутация:
134
|
|
Sorry 2 all...
Вот накатал скачивание при помощи класса CInternetFile библиотеки MFC.
Код:
void DownloadFile(LPCSTR pstrURL,LPCSTR lpszFileName)
{
CInternetSession inetSession;
CInternetFile *inetFile = (CInternetFile *) inetSession.OpenURL(pstrURL, 1, INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_DONT_CACHE);
CFile file(lpszFileName,CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
char buf[8192];
DWORD dwBytesRead;
while (dwBytesRead=inetFile->Read(buf, sizeof(buf)))
file.Write(buf, dwBytesRead);
inetFile->Close();
delete inetFile;
inetSession.Close();
}
|
|
|

06.07.2007, 19:29
|
|
Постоянный
Регистрация: 31.12.2005
Сообщений: 605
Провел на форуме: 4349433
Репутация:
661
|
|
скачивание при помощи класса CInternetFile библиотеки MFC
NetMan, может проще взять Download Master ?
[NiGHT]DarkAngel, не поддавайся на провокации. еб*аш Свой довнлоадер пока не заработает. если не получается по другому, то нужно учится и на своих ошибках..
|
|
|

07.07.2007, 00:19
|
|
Участник форума
Регистрация: 11.07.2006
Сообщений: 125
Провел на форуме: 413927
Репутация:
71
|
|
с начала не читал так что есди не попаду в тему то просто не обращайте внимания
FILE *out;
while(x=ecv(s,buf_in,sizeof(buf_in)-1,0))
{
buf_in[x]=0;
fwrite(buf_in,x,1,out);
}
че то типа того
|
|
|

07.07.2007, 00:34
|
|
Постоянный
Регистрация: 27.08.2006
Сообщений: 367
Провел на форуме: 2009677
Репутация:
472
|
|
da_ff, исправь ecv на recv
|
|
|

07.07.2007, 02:40
|
|
Banned
Регистрация: 18.05.2005
Сообщений: 1,981
Провел на форуме: 1941233
Репутация:
2726
|
|
Я не знаю даже. Может вам картинку с комиксом нарисовать надо или под музыку песню написать где рассказывается на китайском что strcat() прикрепляет строку к строке а не массив байт к массиву байт и что через MFC делать скачивание файла - все равно что через 3DS MAX рисовать точку на экране?
|
|
|

07.07.2007, 09:20
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
Блин, стоит только отойти, уже флейма разведут на Н страниц. Таких тем в инете полно! Исходников тоже!
На крайняк если ТС ничего не найдет (вероятность менее 1%), то я потом выложу в паблик Antichat Web Tool, где скачивание страницы реализовано через чистые сокеты.
В двух словах:
Код:
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKADDR_IN sa = {0};
sa.sin_family = AF_INET;
HOSTENT* phe = gethostbyname("google.ru");
*(DWORD*)&sa.sin_addr.s_addr = *(DWORD*)phe->h_addr_list[0];
sa.sin_port = htons(80);
connect( s, &sa, sizeof(sa) );
const int bsize = 1024*1024; // 1 megabyte
char *buffer = new char[bsize];
wsprintf( buffer, "GET http://google.ru/ HTTP/1.0\r\nHost: google.ru\r\n\r\n" );
send( s, buffer, strlen(buffer), 0 );
int bytes = 0, pos = 0;
do {
bytes = recv( s, buffer+pos, bsize-pos, 0 );
if( !(bytes>0) )
break;
pos += bytes;
buffer[pos] = 0;
} while(1);
closesocket( s );
char *body = strstr( buffer, "\r\n\r\n" );
body += 4; // strlen of \r\n\r\n
// now buffer contains full response, body contains only response body
delete buffer;
Вот накатал скачивание при помощи класса CInternetFile библиотеки MFC.
Скачка файла через MFC - из пушки по воробьям
Тема закрыта
Последний раз редактировалось _Great_; 07.07.2007 в 11:31..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|