views:

931

answers:

7

After reading a bit more about how Gnutella and other P2P networks function, I wanted to start my own peer-to-peer system. I went in thinking that I would find plenty of tutorials and language-agnostic guidelines which could be applied, however I was met with a vague simplistic overview.

I could only find very small, precise P2P code which didn't do much more than use client/server architecture on all users, which wasn't really what I was looking for. I wanted something like Gnutella, but there doesn't seem to be any articles out in the open for joining the network.

A: 

You might have better success researching Bittorrent, I believe that the creator has written some papers, and it seems others are as well.

BitTyrant Bittorent.org, see the developers section

Dana the Sane
A: 

I don't know what platform you are trying to use, but here is a decent article on the subject for .NET.

Jason Bunting
A: 

I had to write a basic Gnutella client in C# using Web Services and I think the class notes on the P2P stuff are still available here and here.

Magic Hat
+1  A: 

I've found the TheoryOrg Unofficial BitTorrent Specification to be the best online source for Bittorrent information. Also, the Monotorrent code is fairly simple and easy to understand. There's also a project called "GCT" which implements JGroups style P2P for LAN/Multicast environments, and its code is similarly easy to understand (if a bit buggy).

jsight
A: 

You can try to read Gnutella2 and try to implement messaging. For reading conceptual material you can read Distributed Systems by Andrew Tannenbaum.

nascentmind
+1  A: 

You can have a look at JXTA. It's intention was to be a generic, platform agnostic p2p framework, in contrast to other p2p implementations which are usually for a very specific purpose (such as Gnutella).

Don't be fooled by it's Java appearance, there are binding available for C/C++/C#, but the core protocols are implemented in XML which should translate to any language.

You can also download a free book here.

Cogsy
+1  A: 

RFC 4981, with its huge bibliography, could be a very good starting point.

bortzmeyer