Jak pobrać plik z internetu za pomocą C

0

Chodzi mi o pobieranie pewnego pliku tekstowego w moim programie.
Udaje mi się pobrać źródło dowolnej strony, jednak jeśli chodzi o pobieranie pliku mam poważne kłopoty. Do pobierania źródła używałem biblioteki winsock.

Z góry dziękuje za wszelkie porady !!!!

0

Może tu znajdziesz czego szukasz...
http://4programmers.net/Forum/viewtopic.php?id=46027

0

Hmm pewnie masz klopoty z protokolem, jezeli uzywasz http to poszukaj w RFC

0

JA DLA VC++, u mnie te CHttpConection nie chceily sie laczyc, i tez nie moglem sobie poradzic, jednak znalazlem rozwiazanie i dziala:), ale nie wiem czy bledow eni bedze ie robile, potrzebne do tego jeszcze sprawzania polaczenia, przy ktorym mi sie wiesza, moe ma ktos rozwiazanie na sprawdzanie polaczenia, bo mi sie wiesza.

int iError=0;
CInternetSession *inses;
CString str("AppUnknown");
CStdioFile * pFile=0;

inses=new CInternetSession(str, 1, INTERNET_OPEN_TYPE_DIRECT );
iError=GetLastError();

pFile=inses->OpenURL(strJaki, 1,
	INTERNET_FLAG_TRANSFER_BINARY, NULL, 0);
iError=GetLastError();//nie wiem czemu tutaj jest blad 2 zwracany. skoro czyta
//teraz kopiujemy pliki
CFile cfd;
register unsigned int iSize=0, size=0, i=0, iTotalSize=0;;
unsigned char *znak;
znak=new  unsigned char[BUFFER_SIZE];

cfd.Open(strGdzie, CFile::modeCreate | CFile::modeWrite );
iError=GetLastError();
  • iSize=GetFileSize(pFile, 0);*jak dam w parametrze to zwroci mi duza liczbe

  • size=pFile->GetLength();*to zwraca nam mala liczbe
    // iError=GetLastError();

    //teraz kopiujemy
    iSize=BUFFER_SIZE;
    // while((int)(*(znak+(i++)))!=255)
    // for(i=0;i<size;i++)
    while(BUFFER_SIZE == iSize)
    {
    iSize=pFile->Read(znak, BUFFER_SIZE);//zwraca ilosc przeczytajnych znakow, jesli ilosc przeczytanych nie rowna sie zakladanej ilosci do przeczytania to znaczy ze koniec pliku
    cfd.Write(znak, iSize);//tylko tyle ile przeczytalem
    iTotalSize+=iSize;
    printf(".");
    }
    printf("\n\n\t\t\tKopiowanie zakonczone pomyslnie.\n\t\t\tMilej zabawy:)\n\n");
    pFile->Close();
    cfd.Close();
    delete [] znak;

1 użytkowników online, w tym zalogowanych: 0, gości: 1