PASV option im FTP-Client

  • VB6

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Jue.

    PASV option im FTP-Client

    Hi, Leute!

    Ich habe einen Code für einen FTP-Clienten gefunden.
    VB@rchiev

    Der funktiniert aber nicht richtig. Er connected zwar auf den FTP-Server, aber bleibt bei "LIST" immer stehen.
    In einem FTP-Programm, welches ich sonst benutze, hatte ich das selbe Problem, allerdings konnte ich es beheben, in dem ich die Option "Use Passive mode" aktiviert habe.

    Frage:
    Was macht dieser Passive Modus?
    Und wie kann ich den in meinen Code einbauen?


    Gruß,
    m3rlin
    mehr als ein LIPPER kann der Mensch kaum werden! :)
    Also, der Passiv Mode ist sehr praktisch, wenn du eine Firewall oder einen Router besitzt.

    Wenn du nicht den Passiv Mode benutzt passiert folgendes, wenn du dir ein Verzeichnis, Datei, etc. vom Server ausgeben lassen willst. Dein Rechner öffnet erst einmal einen Port und teilt diesen dem Server mit. Der Server connectet sich dann zu deinem Rechner auf den angegebenen Port und sendet dir die Daten zu. Nach der Übertragung wird der Port geschlossen.

    Wenn du aber eine Firewall oder so benutzt kann man nicht direkt vom Internet aus auf deinem Computer zugreifen. Dafür gibt es den Passiv Mode.

    Wenn du dir im Passiv Mode eine Datei, etc. übertragen lassen willst, dann teilt dir der Server einen Port mit, zu dem du dich noch einmal zum Server connecten sollst. Wenn du dich dann dort hin connectet hast, sendet dir der Server die angeforderten Daten zu.


    Klingt hoffentlich nicht zu sehr verwirrend, ich hoffe aber dir geholfen zu haben.

    Jue ;)
    Nein, War nicht verwirrend.
    Hab' ich soweit verstanden. Danke!

    Wie sage ich den dem Server, das er mir einen Port zuteilen soll?
    Gibt es dafür einen Befehl? Wenn ja, wann mus ich den senden?


    Gruß,
    m3rlin
    mehr als ein LIPPER kann der Mensch kaum werden! :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „-([m3rLiN])-“ ()

    Bevor du eine Übertragung wünscht musst du durch den Befehlsport (Also, den Standardport (21)) den Befehl "PASV"+vbCrLf senden. Der Server wird dann antworten, aber leider nicht direkt mit einer Portnummer, sondern der IP-Adresse des Servers und 2 Zahlen, aus den du die Portnummer errechen musst.
    Der Server wird so oder so ähnlich antworten (such in deinem Programm am besten nach den Klammern, dann bist du mit deienem Client felxibler):

    227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)

    h1-h4 ist die IP-Adresse des Servers (h1.h2.h3.h4)

    Die Portnummer ist gleich p1*256+p2 (mein ich jedenfalls, probier einfach mal)

    Dann musst du dich mit einem weiterem WinSock-Objekt (Die Befehlsverbindung darf nicht verloren gehen) zur angegebenen IP (h1.h2.h3.h4) auf den errechneten Port connecten. Der Server wird dann auf einen weiteren Befehl warten (z.B. LIST) und dir dann die Daten durch die Transferverbindung zukommen lassen. Nach der Übertragung wird die Transferverbindung geschlossen.

    Ich hoffe, es war wieder verständlich genung

    Jue ;)
    ja war es.... :)
    Ich probier das jetzt mal aus.....

    edit: oh, man. Das ist jede Menge arbeit... Ich muss mir erstmal anschauen, wie das mit dem FTP-Transfer funktioniert. :D

    Gruß,
    m3rlin
    mehr als ein LIPPER kann der Mensch kaum werden! :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „-([m3rLiN])-“ ()

    Ich hab einen kleinen Tipp:

    Probier den Kram doch erst einaml mit Telnet aus:

    Geb in deine Eingabeaufforderung folgendes ein:
    <font color="blue"> telnet [server] 21 </font>

    Dann wird sich der Server melden:
    <font color="red"> 220 Welcome to FTP </font> (oder so ähnlich)

    Du wirst dann anworten:
    <font color="teal"> USER [Benutzername] </font>

    usw.


    Wenn du dann bei PASV angelangt bist, musst du dir den Port ausrechenen und eine 2. Eingabeaufforderung starten. Gib folgendes ein:
    <font color="blue"> telnet [server] [ausgerechneter Port] </font>

    Dann kannst du im 1. Telnetprogramm folgendes eingeben:
    <font color="teal"> LIST </font>

    Im 2. Telnetprogramm wirst du dann (denk ich mal) paar Daten empfangen


    Auf diese Art und Weise kannst du das FTP-Protokoll (und auch noch viele andere Protokolle) ausprobieren.

    Viel Erfolg,
    Jue ;)