Indre i comandi del tuo link non vanno bene perchè sono quelli dell'interfaccia utente del comando FTP. Esistono dei comandi propri del protocollo FTP che sono più a basso livello rispetto a quelli 'utente' da te indicati. Il comando FTP provvede in modo trasparente a fare questa conversione. Basta abilitare la modalità 'debug' del comando FTP per vedere questa conversione.


Xegallo se usi le socket fa' attenzione che esistono due canali di comunicazione, uno per i comandi (sulla porta 20) e uno per i dati (la modalità di connessione di quest'ultima cambia a seconda che usi la modalità attiva, quella usata da te con port, o passiva che prevede l'uso di PASV al posto di PORT)

L'errore che ti viene ritornato è causato dal fatto che non esiste canale di comunicazione dati. Hai creato una socket in ascolto sulla porta indicata da PORT prima di eseguire il comando list?


Per i comandi non posso che suggerirti di leggere l'intero protocollo:

ftp://ftp.rfc-editor.org/in-notes/rfc959.txt