Probleme bei Verbindung mit FTP Server

cesupa

Erfahrenes Mitglied
Hallo,

wollte mal versuchen mich über mein Programm mit einem FTP-Server zu kontaktieren, bleibe aber jedesmal nach der Passwort eingabe stecken. Hier mein bisheriger Programmcode:

Code:
SOCKET c;
    char buf[256];
    char eingabe[256];
    
    c=client_init(21,"85.93.24.26",AF_INET,SOCK_STREAM,0,false);//Eigene Funktion, stellt Verbindung mit ftp.cybton.com her
    cout<<endl;

    while(eingabe[0]!='q') //Solange der 1. Buchstabe kein q ist Schleife ausführen
    {
    empfangen(c,buf,255,0,false);//Daten empfangen
    cout<<buf;//und ausgeben
    cin.getline(eingabe,255);//Eingabe des Benutzers erhalten
    strcat(eingabe,"\n\r");
    senden(c,eingabe,255,0,false);//und senden
}
    senden(c,"quit",255,0,false);    
    empfangen(c,buf,255,0,false);
    cout<<buf;

Wenn ich den Benutzername eingebe (USER cesupa) sagt mir der Server das ein Passwort nötig ist wenn ich ihm das dann zusende(PASS <Passwort>) gehts danach nicht mehr weiter und ich weis nicht warum. :mad:

Danke für eure Hilfe.

Gruß
cesupa
 
Evtl will der Server dein Passwort ja verschlüsselt haben? Hast dus schonmal mit anderen
Servern probiert und bist zu demselben Ergebnis gekommen? Weil so direkt sehe ich keinen Fehler im Code.
Versuch mal dich mit telnet auf den Server zu verbinden und schau, ob das klappt.
 
Hi, also mit telnet funktioniert es einwandfrei.
Hab mal versucht mit dem FTP-Server der TU-Berlin zu verbinden und ich komme aufs gleiche Ergebnis: Nachdem ich das Passwort gesendet hab bekomm ich keine Rückmeldung. :mad:

Gruß
cesupa
 
Klar, hier die sende() Funktion:

Code:
int senden(SOCKET senden,const char FAR* buf,int len,int flags,bool consol)
{
    long rc;
    rc=send(senden,buf,len,flags);
    
    if(rc==SOCKET_ERROR)
                     {
                                         if(consol)
                                         MessageBox(0,"Fehler beim senden","Fehler",0);
                                         else
                                         cout<<"Fehler beim senden "<<WSAGetLastError()<<endl;
                                         
                                         }
                                         else
                                         {
                                             if(rc!=len)
                     {
                                         if(consol)
                                         MessageBox(0,"Fehler beim senden (Verbindung getrennt)","Fehler",0);
                                         else
                                         cout<<"Fehler beim senden (Verbindung getrennt) "<<WSAGetLastError()<<endl;
                                         
                                         }
                                         else
                                         {
                                         cout<<"senden funktioniert"<<endl;
                                         
                                         
                                         //cout<<"senden funktioniert"<<endl;
                                         }
                                                                                 }
return rc;
}

Gruß
cesupa
 
Hi,

also mit PHP kenn ich mcih zwar nicht so recht aus, aber was ich sehe ist das ich es genauso wie in dem PHP-Beispiel gemacht habe.

Ich hab da mal noch eine ganz andere Frage: Ich versuche gerade mit dem Dev-C++ meine Socket klasse in eine DLL zu packen, wenn ich beim Dev ein neues DLL Projekt erstelle hab ich Komstruktor und De-Konstruktor gleich mit in der Klasse/DLL, wenn ich jetzt aber meine Socket Funktionen in die DLL schreibe dann muss ich die immer mit dem Konstruktor verbinden, das sieht dann also so aus:

int DllClass::senden(SOCKET senden,const char FAR* buf,int len,int flags,bool consol)
{
}

Wenn ich die DLL jetzt mit einem Programm teste muss ich immer zuerst eine DllClass Variable deklarieren bevor ich die DLL Funktion nutzen kann. So hier also:
Code:
#include "lib.h"
int main()
{
DllClass variable;
SOCKET c;
/*
...
*/
variable.senden(c,"Hallo",255,0,false);

system("PAUSE");
return 0;
}
Ich möchte es aber so haben das ich nicht erst eine Variable deklarieren muss sondern sofort auf die Funktion zugreifen kann. Also so hier:
Code:
#include "lib.h"
int main()
{
//DllClass variable; //keine Deklaration mehr von DllClass
SOCKET c;
/*
...
*/
//variable.senden(c,"Hallo",255,0,false);

senden(c,"Hallo",255,0,false); //senden Funktion ohne variable

system("PAUSE");
return 0;
}

Wenn ich die Konstruktoren Weglasse sagt er mir das senden() nicht deklariert sei, wenn ich den Konstruktor wieder dazunehme funktioniert die Funktion.
Wie kann ich das mit dem Dev-C++ realisieren, dass ich in der DLL keinen Konstruktor sondern nur Funktionen habe ?

Danke für eure Hilfe.

Gruß
cesupa
 
Zurück