Client FTP compatibile con FileZilla Server
C · Reti di Calcolatori · A.A. 2022-2023
Client FTP scritto in C, progettato per comunicare con FileZilla Server seguendo le specifiche del protocollo FTP. Realizzato come progetto universitario per il corso di Reti di Calcolatori (A.A. 2022-2023), implementa i comandi fondamentali per gestire sessioni, file e directory in modo conforme allo standard.
Comandi supportati
Il client copre le operazioni essenziali di una sessione FTP, dall’autenticazione alla gestione del filesystem remoto.
Sessione e autenticazione
| Comando | Funzione |
|---|---|
USER | Invio username |
PASS | Invio password |
QUIT | Chiusura della connessione |
Modalità di trasferimento
| Comando | Funzione |
|---|---|
PORT | Modalità attiva - specifica la porta dati lato client |
PASV | Modalità passiva - il server apre la porta dati |
TYPE | Tipo di trasferimento (ASCII A / Binario I) |
Operazioni su file e directory
| Comando | Funzione |
|---|---|
LIST | Elenco contenuto della directory corrente |
PWD | Visualizza la directory di lavoro |
CWD | Cambia directory |
RETR | Scarica un file dal server |
STOR | Carica un file sul server |
DELE | Elimina un file |
MKD | Crea una nuova directory |
RMD | Rimuove una directory |
Aspetti tecnici rilevanti
Socket programming - la comunicazione avviene tramite connessioni TCP a basso livello, gestendo separatamente il canale di controllo (comandi) e il canale dati (trasferimento file), come richiesto dal protocollo FTP.
Modalità attiva e passiva - entrambe le modalità di trasferimento sono supportate nativamente: in modalità attiva (PORT) il client apre la porta dati; in modalità passiva (PASV) lo fa il server, rendendo il client compatibile con diverse configurazioni di rete.
Esecuzione multi-thread - l’architettura supporta la gestione concorrente delle sessioni, garantendo un trasferimento file affidabile senza bloccare la connessione di controllo.
Stack tecnologico
- Linguaggio: C
- Ambiente: Unix-like (Linux / macOS)
- Compilazione: GCC + Makefile
- Protocollo: FTP - RFC 959