000
09.02.2009, 12:21 Uhr
wulfgang
|
Hallo,ich versuche einen Ftp-Clienten zu schreiben. Das Problem: Wenn ich in delete_textfile den Konstruktor von Connect nicht ausführe, bekomme ich die Meldung dass das File nicht gefunden wurde, obwohl ich den Konstruktor von Connect in der main aufrufe. Führe ich erst delete_textfile und dann transfer_textfile aus funktioniert es. Wieso aber?
Connect.h
Code: |
class Connect : public read_serverlist { public: Connect(void); static CFtpConnection * Connect::getLastConnection(); static CFtpConnection *connection_pointer; void give_connection(void); public: ~Connect(void); };
|
Connect.cpp
Code: |
CFtpConnection* Connect::connection_pointer=NULL; CInternetSession session((_T("My FTP Session")),1, INTERNET_OPEN_TYPE_PROXY , (_T( "proxy")), NULL, 0); Connect::Connect(void) { //Objekt session wird erzeugt
//Zeiger auf CFtpConnection CFtpConnection *connection; //Objekt der Klasse read_serverlist wird erzeugt read_serverlist LeseListe;CFtpConnection * if(connection = session.GetFtpConnection(pstrServer, LeseListe.servername, LeseListe.password, port, bPassive)) { cout << "Verbindung wurde aufgebaut\n"; connection_pointer=connection; } } Connect::getLastConnection() { return connection_pointer; }
|
delete_transfer cpp
Code: |
delete_textfile::delete_textfile(void) { Connect(); CFtpConnection* connection_pointer; connection_pointer=Connect::getLastConnection(); //Objekt der Klasse read_serverlist wird erzeugt read_serverlist LeseListe; //Textdatei wird gelöscht BOOL bWorking = connection_pointer->Remove (LeseListe.source_txt); if (bWorking) { cout << "Datei ist gelöscht worden"; }
else { cout << GetLastError(); }
}
|
transfer_textfile
Code: |
transfer_textfile::transfer_textfile(void) { CFtpConnection* connection_pointer; read_serverlist LeseListe;
connection_pointer=Connect::getLastConnection(); CFtpFileFind finder(connection_pointer); try { //Verzeichnis wird gewechselt if(connection_pointer->SetCurrentDirectory(_T("automatic/get_bu"))) { cout<<"Verzeichnis wurde mit Erfolg! gewechselt\n"; //Datei wird gesucht BOOL bWorking = finder.FindFile(_T("bu.txt")); if(bWorking) { //Datei wird vom Server auf lokale Festplatte transferriert BOOL bGot = connection_pointer->GetFile(_T("bu.txt"),LeseListe.destination_txt,FALSE); if (bGot) { cout << "Transfer sollte erfolgt sein\n"; } else { cout << GetLastError() << "\n"; } } else {
cout << "The File specified could not be found.!"<<GetLastError(); } } else { DWORD dwInfo = 0; TCHAR puffer[250] = _T(""); DWORD dwSize = sizeof(puffer) / sizeof(TCHAR); if( !InternetGetLastResponseInfo(&dwInfo, puffer, &dwSize) ) { cout << GetLastError(); cout << "Aufruf InternetGetLastResponseInfo nicht erfolgreich"; else { wcout << puffer; cout << "Aufruf InternetGetLastResponseInfo erfolgreich"; }
} } catch(CException* error) { TCHAR szCause[1024]; error->GetErrorMessage(szCause,1024); printf_s("ERROR! %S\n", szCause); error->Delete(); }
}
|
main
Code: |
int _tmain(int argc, _TCHAR* argv[]) { int warte; Connect(); transfer_textfile();// in umgekehrter Reihenfolge funktioniert es delete_textfile();// in umgekehrter Reihenfolge funktioniert es read_textfile(); cin >> warte; return 0; }
|
|