FTP_Dateien downloaden



  • also das ist mein programm

    #include <iostream>
    #include <fstream>
    #include <windows.h>
    #include <wininet.h>
    using namespace std;
    #pragma comment(lib, "wininet.lib")
    
    void __stdcall Callback(HINTERNET hInternet,
                  DWORD dwContext,
                  DWORD dwInternetStatus,
                  LPVOID lpStatusInfo,
                  DWORD dwStatusInfoLen);
    
    	HINTERNET handle;
    	HINTERNET ftp_handle;
    
    int main()
    {
    	int ret;
    	char dir[256];
    	unsigned long dir_len = (unsigned long)256;
    	char filename[256];
    	WIN32_FIND_DATA FileData;
    	HINTERNET hFind;
    	bool finished = false;
    	char dateienftp[20][256];
    	char localdir[1024];
    
    	int datsftp = 0;
    
    	char buffer[1024];
    	bool fertig = false;
    	int datei = 0;
    
    	handle = InternetOpen("test.exe", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_PASSIVE);
    	if (ret = InternetSetStatusCallback(handle, (INTERNET_STATUS_CALLBACK)&Callback) == INTERNET_INVALID_STATUS_CALLBACK)
        {
            cout << "InternetSetStatusCallback failed, error " << GetLastError();
        }
    
    	InternetConnect(handle, "***.funpic.de", INTERNET_DEFAULT_FTP_PORT, "***", "***", INTERNET_SERVICE_FTP, INTERNET_FLAG_ASYNC, 1);
    	cout << "FtpSetCurrentDirectory() " << FtpSetCurrentDirectory(ftp_handle, "download") << endl;
    Sleep(2000);
    
    	hFind = FtpFindFirstFile(ftp_handle, NULL, &FileData, INTERNET_FLAG_NEED_FILE, 1);
    	while(!finished)
    	{
    
    		strcpy(dateienftp[datsftp], FileData.cFileName);
    		cout << "dateien auf server: " << dateienftp[datsftp] << endl;
    		InternetFindNextFile(hFind, &FileData);
    		datsftp++;
    		if (GetLastError() == ERROR_NO_MORE_FILES) 
            {
    			cout << "Suche abgeschlossen" << endl;
    			finished = true;
    		} 
    
    	}
    
    	for(int i = 0; i <= 5; i++)
    	{
    		if(i > 1) //weil 0 und 1 die verzeichnisse "." und ".." sind und die mir nix brinen...
    		{
    			cout << "FtpSetCurrentDirectory() " << FtpSetCurrentDirectory(ftp_handle, "download") << endl;
    			cout << "FtpGetCurrentDirectory(): " << FtpGetCurrentDirectory(ftp_handle, dir, &dir_len) << "\nDir: " << dir << endl;
    			sprintf(localdir, "C:\\%s", FileData.cFileName);
    			cout << "getfile " << FtpGetFile(ftp_handle, dateienftp[i], localdir, true, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 1) << endl;
    			cout << GetLastError() << endl;
    			cout << localdir << " is down..." << endl;
    		} 
    	}
    
    	return 0;
    }
    
    void __stdcall Callback(HINTERNET hInternet,DWORD dwContext,DWORD dwInternetStatus,LPVOID lpStatusInfo,DWORD dwStatusInfoLen)
    {
    
    	switch(dwInternetStatus)
    	{
    	case INTERNET_STATUS_CONNECTED_TO_SERVER:
    		cout << "connected" << endl;
    		break;
    
    	case INTERNET_STATUS_CONNECTING_TO_SERVER:
    		cout << "connecting" << endl;
    		break;
    
    	case INTERNET_STATUS_CLOSING_CONNECTION:
    		cout << "closing" << endl;
    		break;
    
    	case INTERNET_STATUS_CONNECTION_CLOSED:
    		cout << "closed" << endl;
    		break;
    
    	case INTERNET_STATUS_HANDLE_CREATED:
    		INTERNET_ASYNC_RESULT *pRes = (INTERNET_ASYNC_RESULT *)lpStatusInfo;
            ftp_handle = (HINTERNET)pRes->dwResult;
    		cout << "handle created" << endl;
    		cout << "ftphandle " << ftp_handle << endl;
    		break;
    
    	}
    
    }
    

    das problem is jetz:
    die dateien auf dem server listet es mir auch alle auf.
    aber sobald ich den server durchsucht hab geht garnix mehr ich die funkion FtpSetCurrentDirectory() gibt 0 zurück und auch FtpGetFile() geht net was komisch ist weil bei einem anderen programm wo ich davor nix such klappt alles prima.
    vielleicht kann mir einer helfen.
    und entschuldigt variablennamen das soll nur ein testlauf sein...

    mfg killakathl



  • kanns sein das man die verbindung immer wieder schließen und bei einer neuen aktion öffnen muss?
    weil wenn ichs so mach dann gehts aufeinmal
    mfg



  • Also bei mir stürzt das Programm schon beim auflisten ab. Ich arbeite WinXP Professsional (Service Pack 2). Er zeigt mir ungefähr 20mal "datei auflisten: æRAR" an. Ich weiß nicht ob das für dich relevant ist, aber er zeigt außerdem "FtpSetCurrentDirectory() 0" an.

    Mfg Ominion



  • welchen ftpserver hast du verwendet?
    weil ich hab server benutzername und passwort mit *** verändert...
    mfg killakathl



  • Auch Funpic, wie du. Benutzernamen und Passwort habe ich auch verändert. Kommt zuerst das Passwort, oder erst der Benutzername?

    Mfg Ominion



  • zuerst benutzername und dann passwort
    hast du auch den ordner download gemacht und darin dateien?
    mfg



  • Ich habe zwar "test.exe" hochgeladen, aber den Ordner muss ich noch anlegen!

    Mfg Ominion



  • ok das sollte dann so ausschaun:
    name.ersten2buchstabendeinesnamens.funpic.de/download/dateien
    bitte sag mit obs hinhaut... zumindest mal das listen weil das der rest net geht is mir klar =)#

    mfg



  • Jetzt ist "FtpSetCurrentDirectory()" zwar auf 1, aber es kommt immernoch "datei auflisten: æRAR" an. Ich habe ein paar *.exe, *.php und *.html Dateien drin.

    Mfg Ominion



  • Habe deinen Eintrag nicht gesehen :p
    Also ist dateien ein neuer Ordner, oder sollen das Dateien sein? Wenn es Dateien sein sollen, dann funzt es nicht.

    Mfg Ominion



  • kapier ich net...
    weil bei mir gehts...
    unter http://immortalhons.im.funpic.de/ftp/
    hab ich jetz das ganze projekt
    im debug ordner is die exe drinnen im source kannst schaun was du ausführst wenn du willst nur damit du weist was das prog macht...
    sag bitte wenns geht weil sonst krieg ich die kriese bin seit gestern um 23uhr am schreiben...

    mfg



  • sollten dateien sein *heul* *verzweifel*

    mfg



  • Funzt jetzt gar nicht 😞
    Das einzige was kommt, ist ein blinckender Unterstrich. Ich rede jetzt gerade von deinem Prog vom Webspace.

    Mfg Ominion

    [EDIT] Es kommt doch was. "filename" und jede Menge [ und | aber sieht gut aus. [/EDIT]



  • -.-
    ich hasssse es!!!!
    cuteftp sagt es is oben aber der server sagt das es net oben is...
    an tagen wie diesen kotzts mich an...
    mfg



  • Also ich werde dich jetzt (leider) alleine, lassen, da ich noch was ziemlich wichtiges zu tun habe.

    Mfg Ominion



  • ok danke trotzdem
    für jeden der sich noch auskennt, das prog is oben falls es wer versuchn will:
    http://immortalhons.im.funpic.de/ftp/

    mfg


Log in to reply