robertsdotpm / p2pd

Asynchronous P2P networking library and service
MIT License
48 stars 2 forks source link

P2PD

[Coverage >= 82%] [Python >= 3.6] [Mac, Win, Nix, BSD, Android]

Demo image

Watch demo on Asciinema

Welcome to the new release of P2PD. P2PD is a library for doing peer-to-peer networking in Python. This release offers a new methodology for improving connectivity between hosts. It works on private networks, across the Internet, and even in-between nodes on the same machine.

Tens of thousands of lines of code have been updated. Most modules have been refactored or re-written. The protocol has been replaced and now supports encryption; TCP punching now works with IPv6; The STUN client supports hundreds more servers; UPnP is less noisy (and actually works); Networking code has been refreshed to reduce errors; Core connectivity methods have been redesigned (and tested quite thoroughly.)

The new release also includes a simple domain system that offers open, authenticated, registration-free, domain names. The feature is free to use (though some resource limits apply.)

Installation

On non-windows systems make sure you have gcc and python3-devel installed.

python3 -m pip install p2pd

Demo

For an interactive demo type this in your terminal.

python3 -m p2pd.demo

Documentation

https://p2pd.readthedocs.io/

Features

P2PD is a new project aiming to make peer-to-peer networking simple and ubiquitous. P2PD can be used either as a library or as a service. As a library P2PD is written in Python 3 using asyncio for everything. As a service P2PD provides a REST API on http://127.0.0.1:12333/. The REST API is provided for non-Python languages.

P2PD offers engineers the following features: