tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
399
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Simpac Simpac ist offline Mitglied
    Registriert seit
    Jan 2012
    Beiträge
    12
    Hallo.

    Ich bin zweifelhaft am Suchen, wie ich eine dauerhafte Verbindung zu meinem FTP server mit C++ aufbauen kann. Das heißt, dass keine Zwischendatei erstellt wird (beispielsweise ein Textdokument, welches dann hochgeladen wird), sondern direkt eine Datei auf dem Server erstellt wird.
    Die Verbindung hab ich bisher so aufgebaut.

    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    HINTERNET hOpen, hConnection;
        hOpen = InternetOpen("FTP Upload", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
       
        hConnection = InternetConnect(hOpen, "127.0.0.1", INTERNET_DEFAULT_FTP_PORT,
                                         "anwender", "anwender", INTERNET_SERVICE_FTP, 0, 0);
     
    [....................]
     
    InternetCloseHandle(hConnection);
        InternetCloseHandle(hOpen);

    Nun, um Textdokumente hochzuladen, würde ich Folgenden Code verwenden:

    Code cpp:
    1
    2
    
    FtpPutFile(hConnection, "KEINE AHNUNG", "Dateiname.txt",
                      FTP_TRANSFER_TYPE_ASCII, 0);

    Weiß wer, wie ich meine Idee umsetzen kann?

    Mfg Simon
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    welche Bibliothek verwendest du denn derzeit für den FTP Zugriff?

    Verwendest du C++ pur, oder C++ .Net?

    Im C++ .Net Fall könntest du einfach mit einem (FTP)WebRequest eine Datei / bzw. byte[] uploaden:
    http://msdn.microsoft.com/en-us/libr...equest.aspx#Y0

    Falls es eine reine C++ Klasse sein soll könntest du mal:
    http://www.codeproject.com/Articles/...P-Client-Class
    versuchen.

    Ansonsten schau mal hier:
    http://stackoverflow.com/questions/1.../c-ftp-library

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    Eburneolus Eburneolus ist offline Mitglied
    Registriert seit
    Mar 2011
    Beiträge
    15
    Du könntest folgendes versuchen:
    1. Setze deinen Type "TYPE <type>\r\n" an CtrlPort
    2. fordere passive Verbindung an, merk dir den Port, den du als Antwort erhältst
    3. Erstelle nen data_Socket und verbinde zum Host mit dem passiven Port
    4. Sende "STOR <fileName>\r\n" an CtrlPort
    --> Jetzt werden Daten am passiven Port des FTP - Servers erwartet
    5. Sende deine Daten, die du z.B über iostream eingibst an den passiven Port des Servers
    6. Schließe die Verbindung zum passiven Port closesocket(data_Socket), wenn du fertig bist mit deinen Eingaben
    --> Server erwartet nun weitere Befehle am CtrlPort.

    Ich weiss jedoch nicht, wann der Timeout der Verbindung zum data_port des Servers ist,
    steht bestimmt iwo im Protokoll.
    Die Verbindung sollte jedoch einige Zeit erhalten bleiben, das kannst du aber abfangen und bei weiteren Eingaben eine neue Verbindung aufbauen.

    Edit: Für die Verbindung zur Datenübertragung wird TCP verwendet.
    Geändert von Eburneolus (02.02.12 um 19:37 Uhr)
     

  4. #4
    Simpac Simpac ist offline Mitglied
    Registriert seit
    Jan 2012
    Beiträge
    12
    @Thomas:
    Ich programmiere mit "microsoft Visual C++" eine Konsolenanwendung. Ich kann das jetzt nicht direkt zuweisen, wo der Unterschied zwischen dem puren C++ oder dem .net ist. (ich denke mal es ist .net).
    Ein Beispielprogramm wäre jetzt die Rettung: Es öffnet sich eine Dos-Box und alles was man in diese reinschreibt, wird an den Ftp server gesendet. Ich möchte jetzt keinesfalls dreist wirken, aber könnte sich einer die Mühe machen, eins zu schreiben?


    @Eburneolus
    Ich bin noch ziemlicher Anfänger, was C++ angeht (lerne es in der Schule seit 1,5 Jahren) und denke, deine Methode scheint schon zu weit Fortgeschritten zu sein
     

  5. #5
    Eburneolus Eburneolus ist offline Mitglied
    Registriert seit
    Mar 2011
    Beiträge
    15
     

  6. #6
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    Für den Unterschied: Link
    Wenn man sich unsicher ist, stehen im Link ganz unten Erkennungsmerkmale.

    In so einem mit Visualtudio geschriebenen "C++"-Programm kann normales
    und .NET-lastiges durchgemischt werden.
    Dein Codestück im ersten Beitrag ist zwar pures C++,
    ist aber wie gesagt keine Garantie auf .NET-Freiheit.

    Solange dein Programm nur unter neueren Windowsversionen laufen soll,
    ist es im Prinzip egal, was du nimmst.
    Problem wird aber der Lehrer.
    Wenn C++ gelernt werden soll, wird er die .NET-Variante wahrscheinlich nicht akzeptieren.

    @Eburneolus: Dein Link ist für Windows CE.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  7. #7
    Simpac Simpac ist offline Mitglied
    Registriert seit
    Jan 2012
    Beiträge
    12
    @sheel: Erstmal danke für die Info !
    Habe mich schon leicht gewundert, wegen CE ..

    Seh ich das richtig, dass ich bei C++ (pur)
    http://www.codeproject.com/Articles/...P-Client-Class
    erst etwas downloaden muss? Das Programm soll auf jedem PC laufen (soweit Firewall, Proxy etc es zulassen versteht sich) und software (bis auf das eine Programm) unabhängig arbeiten.
     

  8. #8
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Muss nicht, die genannte CE-Funktion gibts auch für das normale Windows.

    InternetOpen->InternetConnect->FtpOpenFile
    Dann mit InternetWriteFile schreiben
    und am Schluss alles mit InternetClosHandle wieder zumachen.

    Mehr zum Lesen, mit Links zu den Funktionen:
    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

Ähnliche Themen

  1. Scrollbalken dauerhaft
    Von ADIT im Forum CSS
    Antworten: 4
    Letzter Beitrag: 23.01.10, 19:55
  2. Umgebungsvariablen dauerhaft bereitstellen
    Von enrix im Forum Linux & Unix
    Antworten: 4
    Letzter Beitrag: 08.10.09, 19:37
  3. daten dauerhaft speichern
    Von raphael_fehlmann im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 03.01.09, 01:23
  4. Login dauerhaft
    Von AtotheZ im Forum PHP
    Antworten: 1
    Letzter Beitrag: 24.12.08, 16:56
  5. Priorität dauerhaft binden
    Von Joda im Forum PHP
    Antworten: 4
    Letzter Beitrag: 16.02.04, 08:29

Stichworte