A lightweight, disposable file transfer server for blazing-fast file sharing without encryption or the hassle of installing services. 🚀
Have you ever needed to quickly transfer a file over a network without encryption overhead, service installations, or a steep learning curve? Look no further! Speedy Disposable File Server is here:
- 🖥️ Server: A simple, disposable TCP server.
- 💻 Client: Sends files directly to the server.
- ⚡ Fast: Prioritizes speed over encryption.
- 🗂️ Incremental: Ideal for transferring large files.
- 📉 Compression: Compresses data for minimal network usage.
- 🚀 Super Fast: Skip encryption and transfer files at maximum speed.
- 🧰 Minimal Setup: No services to install. Just run and go!
- 📦 Block-based: Only sends necessary chunks for incremental updates.
- 📉 Compression: Uses
zlibto save bandwidth. - 🛑 Disposable Server: Perfect for temporary use cases—fire it up, transfer your file, and shut it down.
- 📤 Quickly transferring a single file to another machine on the same network.
- ⚙️ Temporary, on-the-fly file sharing during development or debugging.
- 🖥️ Bootstrapping environments without file-sharing tools preinstalled.
Before you start, ensure you have:
- 🐧 Linux or 🪟 Windows with GCC (or another compiler).
- 🛠️
zlibinstalled for compression.
Clone this repository:
git clone https://github.com/yourusername/speedy-disposable-file-server.git
cd speedy-disposable-file-servermake -f Makefile.servermake -f Makefile.clientRun the server to listen for incoming file transfers:
./serverThe server will listen on 127.0.0.1:12345 by default.
Use the client to send a file to the server:
./client🎉 Voilà! Your file will be sent to the server and saved as output_file.
-
On Machine A (Server):
./server
Output:
Server listening on port 12345... Client connected. File received and written to output_file -
On Machine B (Client):
./client
Output:
Connected to server. File sent successfully.
Encryption is great for security but can slow down file transfers and increase complexity. This project is built for trusted local environments (like within the same LAN), where speed and simplicity are top priorities.
🔒 Note: If you need secure file transfers, this tool isn’t for you. Consider tools like scp or rsync with SSH instead.
- 🧱 Block-based Transfer: Files are divided into 4 KB chunks.
- 🔍 Compression: Each block is compressed using
zlib. - 📤 Client Sends: Block size and compressed block data.
- 📥 Server Writes: Decompresses and writes blocks to a file.
- 🚫 No Encryption: Transfers are in plain text. Not secure for untrusted networks.
- 🛠️ Single File: Only supports transferring one file per session.
- 🌐 Local Use: Designed for use in trusted local networks.
- 🔄 Add Multi-File Support: Extend the protocol for directory transfers.
- 📜 Logging: Include logs for file transfer progress.
- 🌐 Custom IPs/Ports: Allow specifying IP/port from command line.
- ⚡ Parallel Transfers: Optimize for concurrent file uploads.
Want to make this project better? 🛠️
- Fork the repository.
- Create a feature branch.
- Submit a pull request.
Found a bug or need help? Open an issue in the repository or reach out to us via 📧 email.
This project is licensed under the MIT License. Do whatever you want with it, but please include attribution. 😊