Skip to main content

Asynchronous P2P networking library and service

Project description

P2PD

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

P2PD is a new async networking library for Python. It's based on solving some of the problems with Python's existing APIs and supports P2P networking among other features.

Installation

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

python3 -m pip install p2pd

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:

  • Multiple strategies for establishing peer-to-peer direct connections.

    • Direct connect = Connect to a reachable node.
    • Reverse connect = Tell a node to connect to you.
    • TCP hole punching = Simultaneous TCP connections.
    • TURN = Use a proxy server as a last resort.
  • Advanced NAT detection. P2PD can detect 7 different types of NATs and 5 different sub-types for a combined total of 35 unique NAT configurations. The result is better NAT bypass.

  • Smart TCP hole punching. The TCP hole punching algorithm has been designed to require minimal communication between peers to increase the chances of success. The algorithm supports a diverse number of NAT configurations for the best results possible.

  • Port forwarding (IPv4) and pin hole (IPv6.) Automatically handles opening ports on the router to increase reachability.

  • IPv6 ready from day 1. Supports IPv4 and IPv6. Introduces a new format for addresses that offers insight into a peer's NIC cards, internal network, and NAT devices.

  • A new way to do network programming. Focuses on NICs as the starting point for building services. Introduces 'routes' as a way to provide visibility into external addresses. You can build services that support IPv4, IPv6, TCP, and UDP without writing different code for each of them.

  • Language-agnostic REST API. You can call /p2p/open/name/addr then /p2p/pipe/name to turn any HTTP connection into a two-way relay between a peer-to-peer connection.

  • Minimal dependencies. Most of the code in P2PD uses the Python standard library to improve portability and reduce packaging issues.

  • Built on open protocols. P2PD uses IRC as a name system, STUN for address lookups, MQTT for signaling messages, and TURN for last resort message relaying. All of these protocols have public infrastructure.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

p2pd-2.7.9.tar.gz (254.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

p2pd-2.7.9-py3-none-any.whl (199.1 kB view details)

Uploaded Python 3

File details

Details for the file p2pd-2.7.9.tar.gz.

File metadata

  • Download URL: p2pd-2.7.9.tar.gz
  • Upload date:
  • Size: 254.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.3

File hashes

Hashes for p2pd-2.7.9.tar.gz
Algorithm Hash digest
SHA256 529019f41bf9c29be9d8851d6129069f702ee8f02c1a90b084e203fe61a18639
MD5 4c0fd822263fb70b151cef43392543ef
BLAKE2b-256 88a22b7e1d786c8d3471a8beb2548a0066b2f8c009658cfa526c8cfe56764c72

See more details on using hashes here.

File details

Details for the file p2pd-2.7.9-py3-none-any.whl.

File metadata

  • Download URL: p2pd-2.7.9-py3-none-any.whl
  • Upload date:
  • Size: 199.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.3

File hashes

Hashes for p2pd-2.7.9-py3-none-any.whl
Algorithm Hash digest
SHA256 58be40b05863bc93e70b4e3e7b2bdcd96e375209e56029b7ab34d497ddce7e73
MD5 d5e078bb1b4bf6bd9eec3848b26cd455
BLAKE2b-256 4c87fbea6dec8ace327ca6cadaf3e8c1127d149f0da4649c90b7036904741e2d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page