Io ho da poco creato un server FTP, anche se in un altro linguaggio, e ti posso dire che in linea di massima non è nulla di eccessivamente complicato. Certo è che se hai appena cominciato a programmare o non hai mai utilizzato un socket dovresti 'abbassare un po' il tiro'.
Un basilare client ftp lo crei senza troppo sforzo. Per 'basilare' intendo un programma che:
- si connette ad un server FTP.
- effettua autenticazione (comandi USER, PASS).
- apre un canale dati attivo o passivo (comandi PORT/PASV).
- effettua un trasferimento dati (comandi RETR/STOR per down/upload).
- compie varie operazioni su file e directories quali rinomina (RNFR/RNTO), cancellazione (DELE), listing (LIST), ecc...
- si muove all'interno del file system virtuale di FTP (CWD, PWD, CDUP...).
- si disconnetta (QUIT).
Il 'problema' primario che dovrai risolvere, a livello implementativo, sarà quello di far lavorare in contemporanea il canale 'comandi' che utilizzerai per interagire col server e il canale 'dati' che utilizzerai per il trasferimento dati. Questo lo puoi facilmente risolvere utilizzando due threads.
Come letture ti consiglio ovviamente l'RFC959, come consiglio spassionato, invece, quello di facilitarti (di molto) il lavoro utilizzando uno sniffer, osservando come si comporta un client FTP gia esistente.
Se decidi di buttarti in quest'avventura e hai problemi specifici riguardo FTP posso darti una mano.
Saluti

Rispondi quotando