FTP server aufmachen
-
Das Tutorial unter http://www.c-worker.ch/ (da unter "Tutorials") ist wohl das bekannteste dazu...
Vorgehensweise:
- Winsock lernen, damit kannst Du Verbindungen aufbauen und z.B. auf Port 21 (dem Standard-FTP Port) lauschen.
- Infos über das FTP-Protokoll holen (z.B. bei www.rfc-editor.org interessant dürfte auch http://cr.yp.to/ftp.html sein)
Einen standardkonformen FTP-Server zu implementieren ist recht aufwendig und dauert seine Zeit!
-
socket, bind, listen, accept
-
Das hab ich mir schon durchgelesen und auch ein verstanden!
Aber geht das nicht einfacher über Windows oder so?
-
Einfacher geht nur über WinInet (oder dessen Nachfolger) Verbindungen zu FTP-Servern aufzubauen, aber FTP-Server selber bauen leider nicht

-
bambergt schrieb:
Das hab ich mir schon durchgelesen und auch ein verstanden!
Aber geht das nicht einfacher über Windows oder so?Natürlich. Lad dir einfach nen fertigen FTP Server runter.
-
Und wenn ich es über Socket mache, welche befehle muss ich dann benutzen zum verzeichnis Inhalt senden und zum uploaden der Dateien usw.
-
send() und recv()

-
Das meinte ich nicht sonder wie bekomme ich den Inhalt eines bestimmten Verzeichnises
-
RFC lesen?
-
Willst du jetzt eigentlich Client oder Server?!
-
Server
-
Mal angenommen jemand verbindet sich mit deinem Server:
[S] 220 Willkommen auf meinem FTP!
[C] USER einBenutzer
[S] 331 Ok, gibt Passwort her!
[C] PASS bluppdidupp
[S] 230 Ok, alles klar!
[C] PWD
[S] 257 "/"
[C] PORT 127,0,0,1,0,200
[S] 200 Okidokey!
[C] LIST
[S] 226 Ok, directory listing transmitted!
[C] QUIT
[S] 221 Bye![C] = Client
[S] = Dein ServerUSER + PASS zum einloggen
Bei PWD erzählt der Server dir in welchem Verzeichnis du gerade bist
PORT 127,0,0,1,0,200 sagt dem FTP-Server das dein Rechner mit der IP 127.0.0.1 auf Port 200 horcht.
Der Server wird sich dann mit dem Port verbinden und dann "okidokey" sagen
Sobald der Server "LIST" bekommt, sendet er über die 2. Verbindung (die jetzt auf Port 200 läuft) die Verzeichnisliste und trennt die Verbindung anschließend.
QUIT - dürfte klar sein