FTP-Verbindung über Proxy
-
Moin, ich will ein Programm schreiben, dass über einen Proxy eine Ftp-Verbindung zu einem anderem Server aufbaut. Der Compiler spuckt auch keine Fehler- oder Warnmeldungen aus, leider erhalte während der Ausführung des Programms die Meldung, dass der Servername oder die Serveradresse nicht richtig verarbeitet werden konnten. Kann mir jemand einen Tipp geben, bezüglich eines möglichen Fehlers? Welche Rolle spielt hier aktives und passives Ftp?
int _tmain(int argc, _TCHAR* argv[]) { if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { return -1; } //Objekt session wird erzeugt CInternetSession session(_T("My FTP Session"),1, INTERNET_OPEN_TYPE_PROXY ,_T ("beispielproxy"), NULL, 0); CFtpConnection *connection; //Deklarationen für GetFtpConnection Member-Funktion char servername[100]="ftp://beispiel.org"; LPCTSTR pstrServer = _T("ftp://beispiel.org"); LPCTSTR login = _T("user"); LPCTSTR passwd = _T("password"); INTERNET_PORT port = 21; BOOL bPassive = FALSE; cout << "Verbinde mit " << servername << " ...\n"; try { //FTP-Verbindung wird eröffnet,Methode GetFtpConnection wird auf session angewandt, connection wird auf zurückgegeben Zeiger gesetzt if(connection = session.GetFtpConnection(pstrServer, login, passwd, port, bPassive)) { cout << "Verbindung wurde aufgebaut"; } } catch (CInternetException* pEx) { cout<<"FEHLER : "<<GetLastError()<<endl; TCHAR sz[1024]; pEx->GetErrorMessage(sz, 1024); printf_s("ERROR! %S\n", sz); pEx->Delete();
-
Hast du bereits eine Antwort auf deine Fragen gefunden?
-
Benötigt der Proxy eine Anmeldung?
Dann müsstest Du SetOption mit INTERNET_OPTION_PROXY_USERNAME und INTERNET_OPTION_PROXY_PASSWORD verwenden.
-
Morgen, nein habe noch keine Lösung für mein Problem gefunden. Der Proxy ist angeblich offen-keine Anmeldung nötig. Ich weiß aber echt, was ich jetzt machen soll oder wo der Fehler ist.

Habe mal im Dos-Eingabefenster probiert:Server: servername1
Address: 123.12.12.123Name: servername2
Address: 321.32.32.321
Aliases: NameVomProxyGebe ich nslookup servername1 ein erhalte ich:
Server: servername1
Address: 123.12.12.123
Nicht autorisierte Antwort:
Server: servername1
Address: 123.12.12.123Soweit ist ja alles okay, nicht wahr?
Probleme treten auf, wenn ich über den Proxy rauswählen möchte.Gebe ich ping beispiel.org ein erhalte ich:
Ping-Anforderung konnte Host "beispiel.org" nicht finden. Überprüfen Sie den Namen und probieren Sie es erneut.Bei nslookup bekomme ich das Gleiche in grün. Diese Domain existiert aber! Kann das am Proxy liegen?
-
Welcher offene Proxy ist es denn? Habe eben was in dem Zusammenhang gelesen mit
Proxys, die z.B. nur für spezielle IP-Adressen freigegeben sind (an der Uni für irgend-
welche anderen Einrichtungen die auch feste IP-Adressen haben).
-
Ehrlich gesagt,ich habe keine Ahnung welcher Typ von offenem Proxy ich habe.
Unter offenem Proxy habe ich verstanden, dass keine Anmeldung nötig ist.
Wo hast du denn was dazu gefunden und in welcher Weise ist das hier relevant?
-
Moin,
also meine Verbindung über den Proxy steht.Ich habe etwas in eine falsche Richtung gedacht. Ich muss nämlich nur den Proxy anwählen und werde dann automatisch weitergeleitet. (Sitze in einer größeren Organisation)

Falls es jemanden noch interessiert der Code:
#include "stdafx.h" #include <iostream> ///////////////////////////////////////////////////////// //Block zum Aufbauen der Verbindung ///////////////////////////////////////////////////////// //Bibliotheken für FTP-Session #include <afx.h> #include <afxwin.h> #include <afxinet.h> #include <stdio.h> int warte; using namespace std; int _tmain(int argc, _TCHAR* argv[]) { if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { return -1; } CInternetSession session((_T("My FTP Session")),1, INTERNET_OPEN_TYPE_PROXY ,(_T( "NamevomProxy")), NULL, 0); /Zeiger auf CFtpConnection CFtpConnection *connection; //Deklarationen für GetFtpConnection Member-Funktion LPCTSTR pstrServer = _T("NamevomProxy"); LPCTSTR login = _T("BenutzernameMitZiel"); LPCTSTR passwd = _T("password"); INTERNET_PORT port = 21; BOOL bPassive = TRUE; cout << "Verbinde mit " << servername << " ...\n"; try { //FTP-Verbindung wird eröffnet,Methode GetFtpConnection wird auf session angewandt, connection wird auf zurückgegeben Zeiger gesetzt if(connection = session.GetFtpConnection(pstrServer, login, passwd, port, bPassive)) { cout << "Verbindung wurde aufgebaut"; } } //Fehlerroutine catch (CInternetException* pEx) { cout<<"FEHLER : "<<GetLastError()<<endl; TCHAR sz[1024]; pEx->GetErrorMessage(sz, 1024); printf_s("ERROR! %S\n", sz); pEx->Delete(); } return 0; }
-
Hallo, wo hast du denn den Proxy her? Von irgendeiner Liste aus dem Netz?
Ist das in dem Fall nicht sogar gefährlich? Ich meine, könnte der Proxy
dann nicht u.U. deine Zugangsdaten heimlich abgreifen?Wenn es kein großes Geheimnis sein sollte, würde mich mal interessieren, was
bei dir für "NamevomProxy" tatsächlich drin steht