p2pd


Namep2pd JSON
Version 2.7.9 PyPI version JSON
download
home_pagehttp://github.com/robertsdotpm/p2pd
SummaryAsynchronous P2P networking library and service
upload_time2024-01-01 04:42:07
maintainer
docs_urlNone
authorMatthew Roberts
requires_python
licensepublic domain
keywords nat traversal tcp hole punching simultaneous open upnp stun turn sip dhcp add ip to interface natpmp p2p peer-to-peer networking library python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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.

            

Raw data

            {
    "_id": null,
    "home_page": "http://github.com/robertsdotpm/p2pd",
    "name": "p2pd",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "NAT traversal,TCP hole punching,simultaneous open,UPnP,STUN,TURN,SIP,DHCP,add IP to interface,NATPMP,P2P,Peer-to-peer networking library,python",
    "author": "Matthew Roberts",
    "author_email": "matthew@roberts.pm",
    "download_url": "https://files.pythonhosted.org/packages/88/a2/2b7e1d786c8d3471a8beb2548a0066b2f8c009658cfa526c8cfe56764c72/p2pd-2.7.9.tar.gz",
    "platform": null,
    "description": "# P2PD\n\n``[Coverage >= 82%] [Python >= 3.6] [Mac, Win, Nix, BSD, Android]``\n\n**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.\n\n## Installation\n\nOn non-windows systems make sure you have gcc and python3-devel installed.\n\n   python3 -m pip install p2pd\n\n## Documentation\n\nhttps://p2pd.readthedocs.io/\n\n## Features\n\n**P2PD** is a new project aiming to make peer-to-peer networking\nsimple and ubiquitous. P2PD can be used either as a library or as a service.\nAs a library P2PD is written in Python 3 using asyncio for everything.\nAs a service P2PD provides a REST API on http://127.0.0.1:12333/.\nThe REST API is provided for non-Python languages.\n\nP2PD offers engineers the following features:\n\n- Multiple strategies for establishing peer-to-peer direct connections.\n\n  - **Direct connect** = Connect to a reachable node.\n  - **Reverse connect** = Tell a node to connect to you.\n  - **TCP hole punching** = Simultaneous TCP connections.\n  - **TURN** = Use a proxy server as a last resort.\n- **Advanced NAT detection.** P2PD can detect 7 different types of NATs and\n   5 different sub-types for a combined total of **35 unique NAT\n   configurations.** The result is better NAT bypass.\n- **Smart TCP hole punching.** The TCP hole punching algorithm has been\n   designed to require minimal communication between peers to increase\n   the chances of success. The algorithm supports a diverse number of\n   NAT configurations for the best results possible.\n- **Port forwarding (IPv4) and pin hole (IPv6.)** Automatically\n   handles opening ports on the router to increase reachability.\n- **IPv6 ready from day 1.** Supports IPv4 and IPv6. Introduces a new\n   format for addresses that offers insight into a peer's\n   NIC cards, internal network, and NAT devices.\n- **A new way to do network programming.** Focuses on NICs as the\n   starting point for building services. Introduces 'routes' as a\n   way to provide visibility into external addresses. You can build\n   services that support IPv4, IPv6, TCP, and UDP without writing\n   different code for each of them.\n- **Language-agnostic REST API.** You can call **/p2p/open/name/addr**\n   then **/p2p/pipe/name** to turn any HTTP connection into a two-way relay\n   between a peer-to-peer connection.\n- **Minimal dependencies.** Most of the code in P2PD uses the Python\n  standard library to improve portability and reduce packaging issues.\n- **Built on open protocols.** P2PD uses **IRC** as a name system,\n   **STUN** for address lookups, **MQTT** for signaling messages, and\n   **TURN** for last resort message relaying.\n   All of these protocols have public infrastructure.\n",
    "bugtrack_url": null,
    "license": "public domain",
    "summary": "Asynchronous P2P networking library and service",
    "version": "2.7.9",
    "project_urls": {
        "Homepage": "http://github.com/robertsdotpm/p2pd"
    },
    "split_keywords": [
        "nat traversal",
        "tcp hole punching",
        "simultaneous open",
        "upnp",
        "stun",
        "turn",
        "sip",
        "dhcp",
        "add ip to interface",
        "natpmp",
        "p2p",
        "peer-to-peer networking library",
        "python"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4c87fbea6dec8ace327ca6cadaf3e8c1127d149f0da4649c90b7036904741e2d",
                "md5": "d5e078bb1b4bf6bd9eec3848b26cd455",
                "sha256": "58be40b05863bc93e70b4e3e7b2bdcd96e375209e56029b7ab34d497ddce7e73"
            },
            "downloads": -1,
            "filename": "p2pd-2.7.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d5e078bb1b4bf6bd9eec3848b26cd455",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 199055,
            "upload_time": "2024-01-01T04:42:04",
            "upload_time_iso_8601": "2024-01-01T04:42:04.853539Z",
            "url": "https://files.pythonhosted.org/packages/4c/87/fbea6dec8ace327ca6cadaf3e8c1127d149f0da4649c90b7036904741e2d/p2pd-2.7.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "88a22b7e1d786c8d3471a8beb2548a0066b2f8c009658cfa526c8cfe56764c72",
                "md5": "4c0fd822263fb70b151cef43392543ef",
                "sha256": "529019f41bf9c29be9d8851d6129069f702ee8f02c1a90b084e203fe61a18639"
            },
            "downloads": -1,
            "filename": "p2pd-2.7.9.tar.gz",
            "has_sig": false,
            "md5_digest": "4c0fd822263fb70b151cef43392543ef",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 254709,
            "upload_time": "2024-01-01T04:42:07",
            "upload_time_iso_8601": "2024-01-01T04:42:07.983510Z",
            "url": "https://files.pythonhosted.org/packages/88/a2/2b7e1d786c8d3471a8beb2548a0066b2f8c009658cfa526c8cfe56764c72/p2pd-2.7.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-01 04:42:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "robertsdotpm",
    "github_project": "p2pd",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "circle": true,
    "requirements": [],
    "lcname": "p2pd"
}
        
Elapsed time: 0.16430s