ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
399
399
EMPFEHLEN
-
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
-
02.02.12 19:28 #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ß TomJava 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
-
02.02.12 19:30 #3
- 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)
-
@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
-
02.02.12 20:24 #5
- Registriert seit
- Mar 2011
- Beiträge
- 15
Wie wärs mit der Funktion?
http://msdn.microsoft.com/en-us/library/ms918391.aspx
-
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, ...?
-
@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.
-
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.aspxNetiquette (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
-
Scrollbalken dauerhaft
Von ADIT im Forum CSSAntworten: 4Letzter Beitrag: 23.01.10, 19:55 -
Umgebungsvariablen dauerhaft bereitstellen
Von enrix im Forum Linux & UnixAntworten: 4Letzter Beitrag: 08.10.09, 19:37 -
daten dauerhaft speichern
Von raphael_fehlmann im Forum C/C++Antworten: 5Letzter Beitrag: 03.01.09, 01:23 -
Login dauerhaft
Von AtotheZ im Forum PHPAntworten: 1Letzter Beitrag: 24.12.08, 16:56 -
Priorität dauerhaft binden
Von Joda im Forum PHPAntworten: 4Letzter Beitrag: 16.02.04, 08:29





Zitieren


Login






