C++ FTP/Proxy Sever

schwegennagel

Cadet 4th Year
Registriert
Feb. 2005
Beiträge
79
Hallo,
ich möchte ein Programm C++!! schreiben, das über einen Proxy-Server mit FTP-Protokoll Daten von einem Server zum anderen transferiert. Kann mir jemand vielleicht ein kleines Beispiel geben oder sagen wo ich so etwas finde, damit ich erst mal einen Anfang habe???
 
Was genau verstehst du unter Anfang? Wie weit bist du den mit der C++ Materie vertraut?

Andere Frage, kennst du das FTP Protokoll? Welcher Proxy soll es dein sein?
 
Guten Morgen,
ich kenne das ftp-Protokoll nicht:mad:. Gibt es verschiedene Proxy? Mit C++ bin ich ein wenig vertraut. Also ich weiß was eine Klasse, Methode.... ist. Gibt es für mein Problem nicht auch so etwas-eine schon fertige Methode die ich nur einsetzen muss?
 
Wenn du ein fertiges Programm willst, warum willst du es dann selber programmieren?

Nimm Filezilla (da kriegst du auch die C++ Source Files dazu).
 
Hallo,
ich wollte kein komplett fertiges Programm. Nur in Visual Basic gibt es ja schon Methoden wie GetFtpConnection.
Ich wollte mit GetFtpConnection eigentlich eine Verbindung aufbauen. Mein Problem ist pstrServer. pstrServer ist ja ein Zeiger auf einen String. Dieser String ist ja der Name vom Server.
Wie bekomme ich das hin, dass pstrServer auf einen Servernamen zeigt? Fehlermeldung in der 4.Zeile vom Code.

Hier mein Code:
Code:
char servername[10];
	LPCTSTR pstrServer; 
	pstrServer=servername;//cannot convert from 'char [10]' to 'LPCTSTR'
	LPCTSTR login = NULL;
    LPCTSTR passwd = NULL;
    INTERNET_PORT port = 5;
    BOOL bPassive = FALSE;


	cout << "Verbinde mit " << "server" << " ...\n";
	
	//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";     
	}
[CODE]
 
Moin,
also das hilft mir nicht so weiter. Kann ich das indy irgendwie runterladen? Außerdem soll das ganze noch über einen Proxy Server laufen. Kann mir BITTE noch jemand helfen??
 
Nein, leider nicht. Ist das denn so kompliziert:( ?Kann mir sonst vielleicht jemand die Grundbefehle, die ich für mein Problem brauche, auflisten?
Weiß vielleicht auch noch jemand wie ich von char[100] auf LPCTSTR umwandel?
 
Wie wärs einfach damit, den Typen zu casten?
Anders wird es wohl nicht funktionieren :> (LPCTSTR ist soweit ich weiß UNICODE oder ANSI char*)
 
Also gut ich habe gecastet: pstrServer= (LPCTSTR)servername; und der Compiler meckert nicht mehr.
Beim Ablauf des Programms kommt aber erst die Meldung "Debug Assertion Failed" und dann wenn ich trotzdem fortfahre "unhandled exception". Ist in meinem Code noch ein Fehler?
Kann mir noch jemand vielleicht so eine Idee geben, was das mit den Sockets, Proxy-Server und Ftp auf sich hat(Beispiel)?

Code:
#include "stdafx.h"
#include <iostream>
//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;
    }
    
	//Objekt session wird erzeugt
	CInternetSession session;
	//Zeiger auf CFtpConnection
	CFtpConnection *connection;
	
	char servername[100]="ftpproxy-ge"; 
	LPCTSTR pstrServer;
	pstrServer= (LPCTSTR)servername;//cannot convert from 'char [10]' to 'LPCTSTR'
	LPCTSTR login = NULL;
    LPCTSTR passwd = NULL;
    INTERNET_PORT port = 21;
    BOOL bPassive = FALSE;


	cout << "Verbinde mit " << "server" << " ...\n";
	
	//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";     
	}

	

	//damit Fenster nicht sofort schließt
	cin >> warte;
	return 0;
}
 
Hey, wenn ihr bei meinem Code keinen Fehler seht, könnt ihr mir vielleicht so sagen wie man die Sockets für mein Problem nutzt?(ich möchte ein Programm C++!! schreiben, das über einen Proxy-Server mit FTP-Protokoll Daten von einem Server zum anderen transferiert)
Bitte
 
Morgen,
ich habe mich entschieden das ganze erst einmal ohne Proxy-Server zu versuchen. Der Compiler meckert auch nicht. Ich erhalte trotzdem noch die Meldung das der Servername nicht verarbeitet werden kann.
Liegt das irgendwie vielleicht an dem Casting? Was kann ich da besser machen?
Code:
pstrServer = (LPCTSTR)servername;
	LPCTSTR login = (LPCTSTR)"user";
       LPCTSTR passwd = (LPCTSTR)"password";


Hier mein gesamter Code:

Code:
// KlassenMethodenKonsole.cpp : Defines the entry point for the console application.
//

#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;
    }
    
	//Objekt session wird erzeugt
	
	 CInternetSession session(_T("My FTP Session",1, INTERNET_OPEN_TYPE_DIRECT));  

//Zeiger auf CFtpConnection
	CFtpConnection *connection;
    
	

	//Deklarationen für GetFtpConnection Member-Funktion
	char servername[100]="beispielserver"; 
	LPCTSTR pstrServer;
	pstrServer = (LPCTSTR)servername;
	LPCTSTR login = (LPCTSTR)"user";
             LPCTSTR passwd = (LPCTSTR)"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();
     }
	cin >> warte;
	return 0;
}
 
Zuletzt bearbeitet:
Zurück
Oben