<p>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.</p>

<p>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.</p>

[{'answer_id': 23747, 'author': 'Dana the Sane', 'author_id': 2567, 'author_profile': 'https://Stackoverflow.com/users/2567', 'pm_score': 1, 'selected': False, 'text': '<p>You might have better success researching Bittorrent, I believe that the creator has written some papers, and it seems others are as well.</p>\n\n<p><a href="http://bittyrant.cs.washington.edu/#papers" rel="nofollow noreferrer">BitTyrant</a>\n<a href="http://bittorrent.org/" rel="nofollow noreferrer">Bittorent.org, see the developers section</a></p>\n'}, {'answer_id': 23748, 'author': 'Jason Bunting', 'author_id': 1790, 'author_profile': 'https://Stackoverflow.com/users/1790', 'pm_score': 1, 'selected': False, 'text': '<p>I don\'t know what platform you are trying to use, but here is <a href="http://msdn.microsoft.com/en-us/magazine/cc188685.aspx" rel="nofollow noreferrer">a decent article on the subject for .NET</a>.</p>\n'}, {'answer_id': 23754, 'author': 'ftdysa', 'author_id': 2016, 'author_profile': 'https://Stackoverflow.com/users/2016', 'pm_score': 2, 'selected': True, 'text': '<p>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 <a href="http://www.cs.virginia.edu/~humphrey/cs451/ClassNotes/CS451_DisSys_0327.pdf" rel="nofollow noreferrer">here</a> and <a href="http://www.cs.virginia.edu/~humphrey/cs451/ClassNotes/CS451_DisSys_0329.pdf" rel="nofollow noreferrer">here</a>.</p>\n'}, {'answer_id': 23992, 'author': 'jsight', 'author_id': 1432, 'author_profile': 'https://Stackoverflow.com/users/1432', 'pm_score': 1, 'selected': False, 'text': '<p>I\'ve found the <a href="http://wiki.theory.org/BitTorrentSpecification" rel="nofollow noreferrer">TheoryOrg Unofficial BitTorrent Specification</a> 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).</p>\n'}, {'answer_id': 1217002, 'author': 'nascentmind', 'author_id': 149014, 'author_profile': 'https://Stackoverflow.com/users/149014', 'pm_score': 1, 'selected': False, 'text': '<p>You can try to read <a href="http://g2.trillinux.org/" rel="nofollow noreferrer" title="Gnutella2">Gnutella2</a> and try to implement messaging. For reading conceptual material you can read Distributed Systems by Andrew Tannenbaum.</p>\n'}, {'answer_id': 1217083, 'author': 'Cogsy', 'author_id': 48234, 'author_profile': 'https://Stackoverflow.com/users/48234', 'pm_score': 1, 'selected': False, 'text': '<p>You can have a look at <a href="https://jxta.dev.java.net/" rel="nofollow noreferrer">JXTA</a>.  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).  </p>\n\n<p>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.</p>\n\n<p>You can also download a free book <a href="http://www.brendonwilson.com/projects/jxta-book/" rel="nofollow noreferrer">here</a>.</p>\n'}, {'answer_id': 1420301, 'author': 'bortzmeyer', 'author_id': 15625, 'author_profile': 'https://Stackoverflow.com/users/15625', 'pm_score': 2, 'selected': False, 'text': '<p><a href="http://www.ietf.org/rfc/rfc4981.txt" rel="nofollow noreferrer">RFC 4981</a>, with its huge bibliography, could be a very good starting point.</p>\n'}]
['https://Stackoverflow.com/questions/23738', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/1662/']