Peer to Peer SDK

At the beginning of this year I joined the Collaboration Technology group.  Our group is charted with creating a platform for developing Peer to Peer applications and for creating experiences on top of that platform.  Windows XP already contains the elements of a Peer to Peer Development platform.  The Peer to Peer SDK contains samples and tools that can be used to develop peer to peer applications. The APIs are contained in the Advanced Networking Pack for Windows XP:  https://msdn.microsoft.com/library/default.asp?url=/downloads/list/winxppeer.asp

If you have not yet done so and you are interested in Peer to Peer programming you should enable PNRP this is a very cool technology that allows you to register a name that can be discovered by applications running on other computers without using a server. The SDK contains a sample application GraphChat which is a simple chat application that uses PNRP.

To enable PNRP you will need a computer running Windows XP Service Pack 2. PNRP is currently not available for Windows 2003 server.

  • Select Add / Remove programs
  • Select Add / Remove Windows components
  • Select Networking Services and click on details
  • ensure that the Peer to peer check box is ticked and then select Okay followed by Next
  • The Windows installer will do its thing then you should select Next  followed by Finish

To check that everything went well run a netsh command shell by:

  • Select Start followed by Run
  • enter netsh followed by the return key

In the command shell that appears enter the command:

  • netsh p2p pnrp cloud

followed by the command

  • show list

You should see output similar to:

Scope Id Addr State Name

----- ----- ----- ---------------- -----

3 4 1 Virtual LinkLocal_{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}

1 0 1 Virtual Global_

netsh p2p pnrp cloud>

Note: {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} will be a guid and will differ from machine to machine. 

One LinkLocal_{} entry will appear for each network adapter you have installed and there may be a SiteLocal_ entry too.

The peer to peer extensions for netshell are excellent diagnostic tool.  I expect you will be come very familiar with it over time.