P2PNet 1.0.0.9-alpha

This is a prerelease version of P2PNet.
dotnet add package P2PNet --version 1.0.0.9-alpha
                    
NuGet\Install-Package P2PNet -Version 1.0.0.9-alpha
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="P2PNet" Version="1.0.0.9-alpha" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="P2PNet" Version="1.0.0.9-alpha" />
                    
Directory.Packages.props
<PackageReference Include="P2PNet" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add P2PNet --version 1.0.0.9-alpha
                    
#r "nuget: P2PNet, 1.0.0.9-alpha"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=P2PNet&version=1.0.0.9-alpha&prerelease
                    
Install P2PNet as a Cake Addin
#tool nuget:?package=P2PNet&version=1.0.0.9-alpha&prerelease
                    
Install P2PNet as a Cake Tool

P2PNet

A .Net library toolkit for quickly building P2P network applications. P2PNet is fully AOT compatible and aims to be the most reliable, documented, and stable .Net P2P toolchain.

passing version License

About


P2PNet helps quickly build and facilitate peer-to-peer networking with an array of components for setting up your network. Initial peer discovery can be initiated in the LAN, and facilitated over a WAN utilizing various methods such as bootstrapping and IPv6 ICMP blasting. The PeerNetwork will be able to use a range of interoperable WAN and LAN discovery mechanisms to expand and grow the network, manage peer connections, and distribute data and information. Implementing the P2PNet library will make implementing peer-to-peer functionality in your application more seamless and integrated.

Bootstrap Server Container


Docker image for launching an instance of the bootstrap server:

Docker

See live example deployment:

Fly.io Badge

Documentation


Technical overview and API documentation available down below:

view - Documentation

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on P2PNet:

Package Downloads
P2PNet.Widescan

A P2PNet component for mass IPv6 address scanning and discovery via ICMP packets and docile packet sniffing.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0.9-alpha 65 2 days ago
1.0.0.8-alpha 117 10 days ago
1.0.0.7-alpha 92 a month ago
1.0.0.6-alpha 63 a month ago

Bootstrap implementation, greater NetworkTask handling logic, and other misc improvements

-- PeerNetwork peer management
* Updated `LANDiscoveryChannelBase.cs` to assign `SourceOriginIdentifier` to new peers
* Enhanced `PeerNetwork.cs` with a method to retrieve peers by identifier
* Updated `PeerChannel.cs` and `PeerChannelBase.cs` so that IPeer is held in the base class as opposed to the derived class
-- Bootstrap
* Added identifier setting logic in `BootstrapChannel.cs` for `BootstrapServer`
* Introduced `IsActive` property in `BootstrapChannelBase.cs` to track if channel is actively communicating.
* Improved error handling in `BootstrapChannelBase.cs` with structured responses and swappable delegate.
-- NetworkTasks and related
* Refactored `ValidateNetworkTaskHash` to simplify task creation with lots of new methods (will ensure organization and consistency throughout implementation)
* Implemented `NetworkTaskTrustConfiguration` for managing task trust requirements in the TrustPolicy.PeerNetworkTrustPolicy section. This wraps a TaskType with a collection of TaskTrustParameters, which define the rules and permissions checked before executing a task or not.
* Modified `NetworkTaskHandler.cs` to process incoming tasks with origin info -- this uses a new struct NetworkTaskOriginInfo which has several constructor options for passing relavant information needed for the NetworkTaskTrustConfiguration class in the TrustPolicy section named NetworkTaskTrustSettings. To enqueue incoming NetworkTasks, the Enqueue method will need the NetworkTask -and- a NetworkTaskOriginInfo to be passed as params