A compact peer-to-peer file transfer application for Windows over a direct Ethernet link.
- Host (send) and Receiver (receive) modes.
- Send files or an entire folder (preserving directory structure).
- Streamed TAR mode for large folder transfers (avoids temporary archives on sender).
- Manifest negotiation to skip files already present on the receiver (resume/skip).
- Parallel workers for improved throughput when sending many small files.
- Optional SHA256 manifest entries for stronger integrity checks.
- Modern PyQt5 UI with embedded SVG icons, header, watermark, and smooth progress animations.
- Optional automatic IP configuration for direct link (uses
netsh; requires Administrator).
main.py— Main application (PyQt5 GUI + transfer logic).assets.py— Embedded SVG assets used by the UI (icons, logo).build_exe.ps1— PowerShell helper to build a single-file EXE using PyInstaller. Generatesapp.icoand buildsdist\EthernetTransfer.exe.requirements.txt— Build/runtime dependencies used for packaging.create_icon.py— Helper to render the embedded SVG toapp.icoduring the build (optional).- Test utilities:
test_send_folder.py,gui_sim_test.py,gui_end_to_end_test.py.
- Clone the repository.
- Create a clean virtual environment (recommended):
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txt- Run the app (development):
python main.py- Build a distributable EXE (Windows PowerShell):
cd <repo-root>
.\build_exe.ps1The script will generate app.ico from the embedded SVG and run PyInstaller. The final executable will be placed in dist\EthernetTransfer.exe.
- The
Configure IP/Reset IPfeatures callnetshand require Administrator privileges. The app will prompt when those actions are requested. - If the built EXE shows Qt platform plugin errors on other machines, re-run the build in a clean venv or add the
--add-dataargument to include the PyQtplatformsplugin folder.
- For production releases, code-sign the EXE with a trusted code-signing certificate (EV or standard) to avoid SmartScreen warnings. Provide a
.pfxand I can add signing to the build script.
- Open issues or pull requests. Add tests for manifest and streaming logic where practical.
- Add a license (e.g., MIT) before publishing this repository.