Question

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.

Was it helpful?

Solution

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.

OTHER TIPS

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

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

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

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).

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

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top