WinSocket - FTP-Login
-
Hallo zusammen,
ich habe Schwierigkeiten mich auf ftp.mozilla.org einzuloggen. Ich bekomme zwar die Verbindung zum Server, weiß jedoch nicht wie ich die USER und PASS an den FTP schicken soll.
Auf die Art wie ich es bis jetzt mache (siehe unten) klappt es jedenfalls nicht. Ich erhalte meistens die Willkommens-Message oder manchmal nach erneutem senden von Enter ein Login successful, woraufhin jedoch jeder weitere Befehle mit einem Session-Timeout endet.
Was mache ich falsch?
send (s, "USER ftp\r\n", strlen("USER ftp\r\n"), 0); rc = recv (s, buf, sizeof(buf), 0); printf( "logging in with user name 'ftp'\nserver response is %s", buf ); strcpy( buf, "PASS test@gmx.net\r\n" ); send (s, buf, strlen(buf), 0); rc = recv (s, buf, sizeof(buf), 0); printf( "entering password\nserver response is %s", buf );
-
-
rul0r schrieb:
http://msdn.microsoft.com/en-us/library/aa383630(VS.85).aspx
Nein, die FTP-Funktionen kenne ich. Die möchte ich aber nicht nutzen. Keiner eine Ahnung woran es liegt?
-
1. Prüfe den Return Wert von recv(..).
. - Es könnte ein Fehler auftreten (return value < 0)
. - Es könnte die Verbindung unterbrochen sein (return value == 0)
. - Es können nicht alle Daten auf einmal angekommen sein (return value irgendwas zwischen der 1 und der Länge deiner Meldung.)
2. sizeof(buf) geht nur bei lokal definierten char[]. Ist das so?Simon
Edit
Die möchte ich aber nicht nutzen. Keiner eine Ahnung woran es liegt?
Woher sollen wir wissen, warum du diese Funktionen nicht nutzen möchtest?

-
1. sizeof() funktioniert auch in diesem Zusammenhang
2. Wenn ich die Ftp-Klassen benutzen würde, dann bräuchte ich auch keinen Socket
3. return-Wert ist okay. Das hab ich natürlich überprüft
-
2. Wenn ich die Ftp-Klassen benutzen würde, dann bräuchte ich auch keinen Socket
Aha. Ja, natürlich. Das ist eine Folge, kleine Ursache für deine Entscheidung.
3. return-Wert ist okay. Das hab ich natürlich überprüft

So natürlich ist das nicht, denn im Code ist es nicht ersichtlich. Bei deiner printf Ausgabe gehst Du von einem null- terminierten char Array aus, was Du aber nicht kannst.