FTP Client
-
Ich mal ne Frage: Hat vielleicht irgendjemand ne Ahnung wie man unter Windows einen FTP Client schreibt. Es wäre gut wenn dabei nicht die MFC benutzt würden. Links zu Tutorials wären sehr willkommen.
-
Hallo,
Schau dir mal die FTP Funktionen der WinInet Api an: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/ftp_sessions.asp
-
Danke da steht ja eigentlich schon alles drinnen was man wissen muss. Da Werde ich mich jetzt mal dransetzen. Auf jeden Fall Danke für die schnelle Antwort!
-
Also ich hab das jetzt mal ausprobiert. Das Verbinden mit dem Internet und dem Server funktioniert auch, aber das Runterladen einer Datei schlägt fehl. Ich habe für den Versuch mit dem FTP Protokoll einen anonymen FTP Server genommen. Ich stelle jetzt einfach mal den Code hier hin vielleicht sieht einer was ich ändern muss. (Die wininet.lib ist auch eingebunden.)
#include "stdafx.h"
#include <windows.h>
#include <winbase.h>
#include <wininet.h>
#include <string>
#include <iostream>
#include <vector>using namespace std;
bool Initialisierung(HINTERNET &hInt, HINTERNET &hVer);
void VerbindungenSchliessen(HINTERNET &hInt, HINTERNET &hVer);
bool DateiRunterladen(HINTERNET &hInt, HINTERNET &hVer);int main(int argc, char* argv[])
{
HINTERNET hInt, hVer;
if(Initialisierung(hInt, hVer)) DateiRunterladen(hInt, hVer);
VerbindungenSchliessen(hInt, hVer);system("Pause");
return 0;
}bool Initialisierung(HINTERNET &hInt, HINTERNET &hVer)
{
hInt = InternetOpen("MeinFTP", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC);
if(hInt == NULL) {
cout<<"InternetOpen fehlgeschlagen."<<endl;
return false;
}
hVer = InternetConnect(hInt, "ftp.tu-cottbus.de", INTERNET_DEFAULT_FTP_PORT,
NULL, NULL, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, NULL);
if(hVer == NULL) {
cout<<"InternetConnect fehlgeschlagen."<<endl;
return false;
}return true;
}void VerbindungenSchliessen(HINTERNET &hInt, HINTERNET &hVer)
{
InternetCloseHandle(hVer);
InternetCloseHandle(hInt);
}bool DateiRunterladen(HINTERNET &hInt, HINTERNET &hVer)
{
bool rueck = FtpGetFile(hVer, "search software.html", "Empfangen.html", 0,
FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, NULL);
if(rueck == false) {
cout<<"Runterladen fehlgeschlagen."<<endl;
DWORD a = GetLastError();
cout<<a<<endl;
}
return rueck;
}
-
Die Datei auf deinem Server heist nicht "search software.html" sondern "search_software.html". Sowas kannste ganz einfach rausfinden wenn du auch noch die Nachricht vom FTP Server dir anzeigen lässt:
char msg[1024]; DWORD size = sizeof(msg); InternetGetLastResponseInfo(&a, msg, &size); cout << "Server sagt: " << a << " und " << msg << endl;mfg.
-
Ja stimmt... Das lag daran, dass Firefox auf dem FTP Server alles unterstrichen hat und man dann nicht den Unterstrich sehen konnte. Wie auch immer Vielen Dank für die Info und das du dir auch den Server angeguckt hast!
-
Ich habe noch eine letzte Frage: Ich würde gerne den FTP Client einen ProxyServer benutzen lassen und hab mal nach welchen gesucht, aber keine gefunden. hat vielleicht jemand ne Liste mit FTP Proxies oder ne Quelle?