This documentation is archived and is not being maintained.

System.Net.PeerToPeer Namespace

The System.Net.PeerToPeer namespace provides access to peer networking functionality.

How peers discover each other and resolve identifiers is complicated by transient connectivity and the lack of access to address records such as the Domain Name System (DNS). The Windows Peer-to-Peer Infrastructure solves this problem with a name resolution and peer discovery scheme called PNRP.

Peer Name Resolution Protocol (PNRP) provides a name resolution mechanism for peer-to-peer networks. PNRP is designed to resolve a name to a network IPEndPoint in a completely peer-to-peer manner.

Basic PNRP functionality is provided in the System.Net.PeerToPeer namespace classes. They provide the ability to create a peer and register it in a Cloud of peers. They also provide the ability to resolve a PeerName to its network endpoint, TCP port, cloud, or other address identifier(s).

Advanced functionality for peer-to-peer networking is provided in the System.Net.PeerToPeer.Collaboration namespace.

In Windows Vista, PNRP ships as a service that is started on demand by applications. In addition, there is a PNRP machine registration service that can be manually enabled by applications or users if they want to publish machine names for remote connections and communications.

PNRP version 1 was included in Windows XP Service Pack 2 (SP2), Windows XP Professional x64 Edition, and Windows XP with Service Pack 1 (SP1) and the Advanced Networking Pack for Windows XP.

In addition, there is a PNRP machine registration service which can be manually enabled by applications/users if there is interest in publishing machine names for remote connection and communication.

Public classCloudSpecifies the values that define a Peer Cloud object.
Public classCloudCollectionRepresents a container for CloudCollection elements. This class cannot be inherited.
Public classPeerNameSpecifies the values that define a peer-to-peer PeerName object. A peer name is typically a string used to identify a peer resource.
Public classPeerNameRecordDefines the set of values that form a peer name record object. This record includes items such as the peer name and the collection of endpoints with which it communicates. Peer name records are used to define the individual peer nodes within a Cloud.
Public classPeerNameRecordCollectionRepresents a container for PeerNameRecord elements.
Public classPeerNameRegistrationRegisters a PeerName in a Cloud or set of clouds.
Public classPeerNameResolverSpecifies the values that resolve a PeerName to a PeerNameRecord using the PNRP Namespace Provider API protocol.
Public classPeerToPeerExceptionRepresents the exceptions that are thrown when an error is raised by the Peer-to-Peer Infrastructure.
Public classPnrpPermissionSpecifies the values that are used in System.Net.PeerToPeer object permissions.
Public classPnrpPermissionAttributeAllows security actions for PnrpPermission to be applied to code using declarative security.
Public classResolveCompletedEventArgsUsed in conjunction with the ResolveCompleted event, which is signaled when a resolve request for a specific PeerName has completed.
Public classResolveProgressChangedEventArgsUsed in conjunction with signaling the ResolveProgressChanged event. It is signaled whenever a PeerNameRecord object is found in response to a ResolveAsync operation on a specific PeerName.

Public enumerationPeerNameTypeDefines the type of PeerName to create. A peer name is either secured or unsecured. A secured peer name provides a proof of ownership of the name. An unsecured peer name has no identity associated.
Public enumerationPnrpScopeSpecifies the different scopes of a PNRP cloud.