Skip to content

A simple FTP client-server built with Python using sockets. Implements passive mode FTP with authentication, file transfer, and directory listing. Designed for learning computer networking.

Notifications You must be signed in to change notification settings

FarrelAD/Python-FTP-Client-Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Python FTP Client-Server

A simple FTP client and server built in Python using the socket module as the core networking tool. This implementation follows the passive mode FTP approach, where the client initiates all connections. Passive mode is commonly used because it is more firewall and NAT-friendly.

Features πŸͺ

This custom FTP implementation includes several standard FTP commands and functionalities:

  1. USER and PASS – Authentication with username and password.
  2. PWD – Print the current working directory.
  3. LIST – List files and directories in the server.
  4. RETR – Download files from the server.
  5. STOR – Upload files to the server.
  6. QUIT – Close the connection.

How It Works βš’οΈ

This DIY FTP server follows the standard FTP protocol specifications. It establishes two types of connections between the client and server:

  1. Control Connection – Handles command transmission and responses between the client and server.
  2. Data Connection – Used for transferring files and directory listings between the client and server.

Since this FTP implementation operates in passive mode, the client is responsible for initiating the data connection, making it more suitable for use behind firewalls and NAT configurations.

Demo πŸš—

demo.mp4

Notes πŸ“

This FTP server was developed and tested on a Windows environment. Cross-platform compatibility is not guaranteed due to potential limitations in Python's networking modules on different operating systems.

Contributions πŸ«±πŸ»β€πŸ«²πŸ»

Contributions are welcome! Feel free to submit issues, feature requests, or pull requests to improve this project. 😊

About

A simple FTP client-server built with Python using sockets. Implements passive mode FTP with authentication, file transfer, and directory listing. Designed for learning computer networking.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages