FTP Client – Compatible with FileZilla Server
C · Computer Networks · A.Y. 2022-2023
An FTP client written in C, designed to communicate with FileZilla Server following the FTP protocol specification. Built as a university project for a Computer Networks course (A.Y. 2022-2023), it implements the essential commands for managing sessions, files, and directories in a standard-compliant way.
Supported Commands
The client covers the core operations of an FTP session, from authentication to remote filesystem management.
Session and Authentication
| Command | Function |
|---|---|
USER | Send username |
PASS | Send password |
QUIT | Close the connection |
Transfer Modes
| Command | Function |
|---|---|
PORT | Active mode - specifies the client-side data port |
PASV | Passive mode - the server opens the data port |
TYPE | Transfer type (ASCII A / Binary I) |
File and Directory Operations
| Command | Function |
|---|---|
LIST | List contents of the current directory |
PWD | Print working directory |
CWD | Change directory |
RETR | Download a file from the server |
STOR | Upload a file to the server |
DELE | Delete a file |
MKD | Create a new directory |
RMD | Remove a directory |
Technical Highlights
Socket programming - communication is handled through low-level TCP socket connections, managing both the control channel (commands) and the data channel (file transfer) separately, as required by the FTP protocol.
Active and passive modes - both transfer modes are natively supported: in active mode (PORT) the client opens the data port; in passive mode (PASV) the server does, making the client compatible with different network configurations.
Multi-threaded execution - the architecture supports concurrent session management, allowing reliable file transfer without blocking the control connection.
Tech Stack
- Language: C
- Environment: Unix-like (Linux / macOS)
- Build: GCC + Makefile
- Protocol: FTP - RFC 959