
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;
}
//---------------------------------------------------------------------------
|
|
|