InternetConnect



  • Mit folgendem Code stelle ich eine Verbindung zu einem Web-Server her. Verwende ich für den InternetConnect-Aufruf Konstanten (siehe unten), klappt das ganze auch fehlerfrei.

    int FTP_Upload (LPCSTR szFileName, LPCSTR lpszServerName, LPCSTR szUser, LPCSTR szPassword)
    {
         DWORD     dwNumberOfBytesWritten = 0;
         HINTERNET hFile,
                   hFtpSession,
                   hIntSession;
    
         hIntSession = InternetOpen ("D_FTP", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
         if (hIntSession == NULL) {
              error ("InternetOpen fehlgeschlagen");
              return (1);
         }
    
         // Hier ist mein Problem
         hFtpSession = InternetConnect (hIntSession, "www.xxx.de", INTERNET_DEFAULT_FTP_PORT,
                                        "User", "Password", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
         if (hFtpSession == NULL) {
              InternetCloseHandle (hIntSession);
              error ("InternetConnect fehlgeschlagen");
              return (1);
         }
    …
    

    Verwende ich jedoch stattdessen aber

    hFtpSession = InternetConnect (hIntSession, lpszServerName, INTERNET_DEFAULT_FTP_PORT,
                                        szUser, szPassword, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
    

    und rufe dann die Funktion FTP_Upload mit den Parametern "User", "Password" und www.xxx.de auf, schlägt InternetConnect fehl!

    Jemand eine Ahnung, warum???



  • Hast du denn die Variablen so erstellt:

    char* lpszServerName=new char[16];
    lstrcpy(lpszServerName,"http://www.xxx.de");
    

    Prüf das nochmal, vielleicht liegt da der Fehler. Oder legst du Sie in einem früheren Funktionsaufruf fest? Variablen verlieren beim Funktionswechseln ihren Wert, deklariere sie also am besten global.

    Gruß!
    Unzi



  • Was soll das ...

    Wenn ich die Funktion so aufrufe:

    FTP_Upload ("test.htm", "www.xx.de", "User", LPCSTR "Password");
    

    werden die Adressen der Konstanten übergeben, für die der Compiler bereits Speicher reserviert hat.

    Der Code ist in C geschreiben und beinhaltet auch keine Klassen.



  • Achso, jetzt, ja, ich hatte schlecht gelesen. Welches Betriebssystem und welchen Compiler hast du denn?

    Gruß!
    Unzi



  • Dürfte eigentlich keine Rolle spielen: Windows 2000 / Visual C/C++ 6.0



  • Wieso finde ich dann FTP_Upload nicht in der MSDN-Hilfe?

    Gruß!
    Unzi



  • @unzi: Die Funktion wirst du lange in der MSDN suchen können, denn die gibt es dort garnicht. Die Funktion hat sich "Ein Gast" selbst geschrieben:

    int FTP_Upload (LPCSTR szFileName, LPCSTR lpszServerName, LPCSTR szUser, LPCSTR szPassword)
    

    Gruß
    Philipp


Anmelden zum Antworten