Wie starten Sie die active-Modus für den FTP-client in C, linux
Ich habe das schreiben ein wenig Kommandozeilen-FTP-client für linux in C. Es funktioniert sehr gut für gemeinsame Nutzungen (Verzeichnis, verwalten, abrufen und speichern von Dateien, etc.), und ich möchte hinzufügen die active-Modus (im moment jeder transfer wird unter den passiven Modus).
Ich weiß, dass ich Sie schicken einen Befehl in der Form :
PORT a,b,c,d,e,f
wo a b c d
sind die ip-Adresse Blöcke und e f
die port-Nummern. Allerdings, so wie ich es verstehe, die ip muss die ip des Rechners, auf dem mein client läuft, aber ich habe empfohlen, um getsockname()
. Von dem, was ich getestet habe, getsockname()
bekommt von mir die lokale ip von der Schnittstelle(s) von meiner Buchse, nicht meine ip vom internet aus gesehen. Also ich kann nicht geben Sie diese ip-Adresse für den server zu verbinden.
Sich die Frage : verstehe ich den Befehl PORT
richtig, und wie man die richtige ip zu senden ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
FTP aktiv-Modus bedeutet, dass ein server öffnet eine Verbindung zu einem client und sendet die Daten an ifself. Es ist oft unpraktisch, also der passiv-Modus erfunden wurde: server-öffnet einen weiteren port lauscht für eingehende verbindungen und die übertragung beginnt, wenn jemand verbunden ist.
So, einen passiv-Modus-Sitzung sieht wie folgt aus:
In der Erwägung, dass ein Beispiel von einer aktiven Sitzung:
P. S. FTP ist ein sehr altes Protokoll (definition aus circa 1970), definiert als es noch keine Router, Tore und andere transport-Ebene leckereien, in der Regel waren es mehrere Computer, die direkt miteinander verbunden, so dass der jeweils aktive Modus klappte auch ganz gut, den passiv-Modus ist, wie das Protokoll heute überlebt.
So, ja, Sie haben gelernt PORT-Kommando, richtig, aber es gibt keinen einheitlichen Weg, um Ihre externe IP (es können mehrere Ihre IPs in verschiedenen Netzwerken auf der lokalen Maschine, kann es mehrere Tore mit Ihren eigenen Netzen auf dem Weg zum server, welche möchten Sie verwenden?). Der zweite Teil der Frage, wie Sie Ihre IP, wie es gesehen wird von den server, kann nicht beantwortet werden (das ist, was der passive Modus ist für).
Wenn Sie hinter einem NAT, es ist das NAT responsability zu brechen, die die Ende-zu-Ende-Prinzip^W^W^W^WNAT die Adresse in HAFEN/226 Befehle/Antworten. Das sollte NAT support, FTP-ausdrücklich.