E' così infatti, ma molto raramente capita.2) Il protocollo ftp dice, CHIARAMENTE, che quando si invia un comando possono seguire una o più risposte e tutte terminanti con i due caratteri speciali \r\n.
Un possibile caso potrebbe essere quello in cui il server decide di chiudersi per fatti suoi nel qual caso ti manda un messaggio di sua iniziativa del tipo "4xx mi sto chiudendo" ma è qualcosa che succede molto di rado, in genere si chiude e basta.
Io stesso, in pyftpdlib, non ho implementato nessuna risposta "a sorpresa" di questo tipo e ipotizzo che la maggior parte dei server esistenti abbia fatto lo stesso.
A mio parere è una casistica che in fase di sviluppo iniziale puoi tranquillamente evitare di prendere in considerazione.
Capito. In tal caso torno a suggerirti di prendere spunto da ftplib.py.1)Devo ricrearlo io senza l'aiuto della libreria.
Lo devo fare per gli esami.
FTP non è eccessivamente complesso. L'unica rottura è il fatto che hai due connessioni separate da gestire (canale comandi e dati) anzichè una, un parallelismo che devi risolvere utilizzando uno dei seguenti approcci:
- asincrono (quello che ho usato sviluppado pyftpdlib, tipicamente basato su select(), poll() e similari. puoi utilizzare, asyncore/asynchat della libreria standard, Twisted o similari)
- multi thread (modulo threading)
- multi processo (os.spawn() o il modulo multiprocessing di Python 2.6)
Ciao

Rispondi quotando