Показать сообщение отдельно

  #13  
Старый 01.07.2007, 12:20
[NiGHT]DarkAngel
Участник форума
Регистрация: 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;
}
//---------------------------------------------------------------------------