Skip to content

Repository files navigation

Ethernet Transfer

A compact peer-to-peer file transfer application for Windows over a direct Ethernet link.

Features

  • 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).

Repository layout

  • 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. Generates app.ico and builds dist\EthernetTransfer.exe.
  • requirements.txt — Build/runtime dependencies used for packaging.
  • create_icon.py — Helper to render the embedded SVG to app.ico during the build (optional).
  • Test utilities: test_send_folder.py, gui_sim_test.py, gui_end_to_end_test.py.

Quick start (developer)

  1. Clone the repository.
  2. 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
  1. Run the app (development):
python main.py
  1. Build a distributable EXE (Windows PowerShell):
cd <repo-root>
.\build_exe.ps1

The script will generate app.ico from the embedded SVG and run PyInstaller. The final executable will be placed in dist\EthernetTransfer.exe.

Troubleshooting

  • The Configure IP / Reset IP features call netsh and 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-data argument to include the PyQt platforms plugin folder.

Distribution & signing

  • For production releases, code-sign the EXE with a trusted code-signing certificate (EV or standard) to avoid SmartScreen warnings. Provide a .pfx and I can add signing to the build script.

Contributing

  • Open issues or pull requests. Add tests for manifest and streaming logic where practical.

License

  • Add a license (e.g., MIT) before publishing this repository.

About

P2P File Transfer Source Code | Peer-to-Peer Networking | Python | Socket Programming | Direct Transfer

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages