Code Monkey home page Code Monkey logo

p2pconnect's Introduction

P2PConnect

p2pconnect logo

P2PConnect is meant to facilitate true serverless peer to peer networking. This is an early stage project. Initial peer discovery is initiated as the client randomly selects one port of a fixed collection to be the designated broadcast port, while listening on all the others. The pool of ports are the same for all clients, so as they begin to broadcast to the LAN they will at some point reach each other. Multicast is also utilized if available to the network. The clients are broadcasting a unique identifier that tells the reciever [1] Whether or not the packet came from a trusted source [2] How to connect to the sender, which the receiver can use to then establish a reliable TCP connection. Once a TCP connection is esablished, they begin to communicate with eachother. Currently, 2 reliable peer "pings" elevates the peer's status to begin data transmisssion (distributed memory, files, ect). The current sample attempts to load "RandomeFile.csv" and broadcast it (this is temporary debugging during the development phase). Down the road the DistributionHandler will be used to store data and process a task queue among network members, and the EncryptionHandler will manage unique signatures and data integrity.

Static Badge

Note: If you are on a LAN with two machines and they both startup on the same broadcast port within a minute of eachother, there can be hangups that lead to hindered discovery.

Static Badge

Note: Generally, with enough time, LAN peers will establish reliable communication and ping each other. There are some instances such as the scenario above where there's a rare exception.

Static Badge

Note: DistributionHandler is still in early development and is mostly just scaffolding for now.

Static Badge

Static Badge

Roadmap:

  1. Short term implementation to improve reliability and stability of peer connections: [1] Rotating broadcast port [2] Discern excess local connection and trim them [3] Variabalize rate of broadcasting as to a sine wave rather than constant heart beat to lighten computation load
  2. Full implementation of duty packets (CollectionSharePacket and DisconnectPacket) to enchance peer discovery and connection integrity.
  3. Medium term finalization of DistributionHandler to faciliate data transmission among peers.
  4. Medium term implementation of an encryption handler that will integrate cryptographic keys to encrypt outgoing and decrypt incoming network broadcasts.
  5. Long term implementation of WAN discovery mechanism(s).

p2pconnect's People

Contributors

realchrisdebon avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.