Zum Inhalt springen

Proxy-Server


wulfgang

Empfohlene Beiträge

Hallo,

ich möchte ein Programm schreiben, das Dateien über einen Proxy-Server mit dem FTP-Protokoll eine Verbindung zu einem anderen Server herstellt.

Der Compiler läuft auch ohne Probleme nur beim Ablaufen des Programms kommt folgende Fehlermeldung:

Debug Assertion Failed

File f:\rmt\vctools\vc7libs\ship\atlmfc\include\afxwin1.inl

Ich benutze Visual Studio 2005 und schreibe das ganze als Konsolenanwendung. Wo liegt mein Fehler?

Schon mal vielen Dank für die Mühe!:)

/////////////////////////////////////////////////////////

//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;

//Zeiger auf CFtpConnection

CFtpConnection *connection;

//Deklarationen für GetFtpConnection Member-Funktion

char servername[100]="beispielserver.org";

LPCTSTR pstrServer;

pstrServer = (LPCTSTR)servername;

LPCTSTR login = NULL;

LPCTSTR passwd = NULL;

INTERNET_PORT port = 21;

BOOL bPassive = FALSE;

cout << "Verbinde mit " << servername << " ...\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";

}

}

Bearbeitet von wulfgang
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 65
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Aber wenn Unicode aktiviert wäre dann dürfte doch das einzige was passiert sein das der Servername falsch interpretiert wird oder?
Ordentlich nullterminiert wird er dann auch nicht mehr sein.

@wulfgang:

Im Programmordner von Visual C++ solltest du eine Datei namens afxwin1.inl finden. Bei der Fehlermeldung steht auch eine Zeilennummer dabei. Zeig bitte mal, was da steht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nabend, wollte das ganze eigentlich noch mal zu Hause ausprobieren. Erhalte aber leider die Meldung: LINK : fatal error LNK1104: Datei "nafxcwd.lib" kann nicht geoeffnet werden

Legt also an #include <afx.h> #include <afxwin.h> #include <afxinet.h>

Muss ich da irgendwie was runterladen oder nur eine Einstellung ändern?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Morgen,

also ich habe jetzt einfach dem einem Namen gegeben. CInternetSession session("Test");

Erhalte jetzt die Fehlermeldungerror: C2664: 'CInternetSession::CInternetSession(LPCTSTR,DWORD_PTR,DWORD,LPCTSTR,LPCTSTR,DWORD)' : cannot convert parameter 1 from 'const char [5]' to 'LPCTSTR'

Kann mir bitte noch mal jemand helfen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

erst einmal eine gute Nachrichtt. Mein alter Fehler von heute morgen ist weg. Habe jetztgeschrieben: //Objekt session wird erzeugt

CInternetSession session(_T("My FTP Session"));

Stattdessen kommt während der Ausführung des Programms jetzt die Meldung: Unhandled exception at 0x7c812a5b in KlassenMethodenKonsole.exe: Microsoft C++ exception: CInternetException at memory location 0x0012fcd4.. Und ich habe keine Ahnung was das jetzt wieder sein soll:confused:

Zu deiner Frage:Habe bisher noch nie bewusst ein globales CWinApp-Objekt erstellt. Wo würde ich das denn finden oder erzeugen?

Habe gerade mal gegoogelt aber war irgendwie nichts so wirklich hilfreiches, nur dass für jede Anwendung nur eines existieren kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Stattdessen kommt während der Ausführung des Programms jetzt die Meldung: Unhandled exception at 0x7c812a5b in KlassenMethodenKonsole.exe: Microsoft C++ exception: CInternetException at memory location 0x0012fcd4.. Und ich habe keine Ahnung was das jetzt wieder sein soll:confused:
Das ist eine Ausnahme (Exception).

Ausnahmebehandlung ? Wikipedia

CInternetSession::GetFtpConnection wirft im Fehlerfall eine Ausnahme vom Typ CInternetException:

CInternetSession::GetFtpConnection

Wenn du eine Fehlerbehandlung in dein Programm einbauen willst (was du tun solltest), musst du die Ausnahme fangen und auswerten.

Zu deiner Frage:Habe bisher noch nie bewusst ein globales CWinApp-Objekt erstellt. Wo würde ich das denn finden oder erzeugen?
Wenn das Problem mit der Assertion nicht mehr auftritt, hat sich das erledigt. Aber normalerweise würde man einfach eine globale CWinApp-Variable anlegen:

CWinApp theApp;

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin, habe jetzt das Exception Handling eingebaut. Nur kann ich mit der Meldung nicht so viel anfangen. Ich erhalte nämlich nur die Ausgabe "Error! D"

Error stammt ja von mir. Was soll mir das D sagen?

#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"));


	//Zeiger auf CFtpConnection

	CFtpConnection *connection;




	//Deklarationen für GetFtpConnection Member-Funktion

	char servername[100]="onlinenham.dyndns.org"; 

	LPCTSTR pstrServer;

	pstrServer = (LPCTSTR)servername;

	LPCTSTR login = NULL;

    LPCTSTR passwd = NULL;

    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)

    {

        TCHAR sz[1024];

        pEx->GetErrorMessage(sz, 1024);

        printf_s("ERROR!  %s\n", sz);

        pEx->Delete();

     }

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay hattest Recht mit %S. Bekomme jetzt eine Fehlermeldung: "Der Servername oder die Serveradresse konnten nicht verarbeitet werden".

1)Meine Syntax zum Aufbau der Verbindung ist wohl jetzt richtig?

2)Bei getFtpConnection muss ich doch auch den Zielserver angeben, oder?

Ich will ja über einen Proxy-Server eine Verbindung mit Ftp zu einem anderem Server.

3)Muss ich den Proxy-Server noch irgendwo angeben?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe versucht CInternetSession::CInternetSession zu implementieren.

Leider kommen noch ein paar Fehler: "error C2275: 'LPCTSTR' : illegal use of this type as an expression"

Mit CInternetSession::CInternetSession kann ich doch mein CInternetSession-Objekt vorinitialisieren. Habe ich da völlig falsch gedacht?

/////////////////////////////////////////////////////////

    //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(

    LPCTSTR pstrAgent = NULL,

    DWORD_PTR dwContext = 1,

    DWORD dwAccessType = INTERNET_OPEN_TYPE_PROXY,

    LPCTSTR pstrProxyName = "proxybeispiel-ge",

    LPCTSTR pstrProxyBypass = NULL,

    DWORD dwFlags = 0 ) session(_T("My FTP Session"));

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit CInternetSession::CInternetSession kann ich doch mein CInternetSession-Objekt vorinitialisieren. Habe ich da völlig falsch gedacht?

Ja, die Syntax ergibt keinen Sinn ;)


CInternetSession session(_T("My FTP Session",1, INTERNET_OPEN_TYPE_PROXY , "proxybeispiel-ge", NULL, 0);
[/PHP]

PS @Klotzkopp:

Hab gerade mal in die Doku zu CInternetSession geschaut und das CWinApp Obejct brauchst du wohl nur wenn du keinen Namen übergibst weil dann wohl versucht wird daher einen zu holen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...