Peer-to-peer networking offers users many opportunities for collaboration and sharing by connecting computers associated by geography or network characteristics. The chance to offer and discover services, files, data, and programmatic offerings increases flexibility and utilization of computing resources.
A peer-to-peer network may include similar groupings of computers in clusters known as clouds. Clouds may be identified by their scope or by other attributes such as a department it is associated with. Multiple clouds may exist within a given company or organizational entity. Offerings available on the peer-to-peer network are known as endpoints. Endpoints may be computers, files, or programs. However, endpoints may also include services that are available at more than one physical location on the peer-to-peer network, that is, a service may have multiple Internet Protocol addresses and/or IP ports.
Endpoints that wish to join or maintain contact with a peer-to-peer network may use a service called the “Peer Name Resolution Protocol” (PNRP). PNRP is currently accessible via two mechanisms, a GetAddrInfo application program interface (API) or a Winsock Namespace Provider API. The GetAddrInfo API is relatively simple but does not make available all the functionality of PNRP. The NamespaceProvider API supports all the features of PNRP but has been found cumbersome and difficult to use by some developers. Beyond the coding challenges, the prior art APIs increased the difficulty of debugging systems incorporating PNRP. The adoption of PNRP and subsequently, the robust features available through PNRP for peer-to-peer networking, has been hampered by the difficulty of using the APIs currently available.