views:

244

answers:

3

how can i make my own napster ? which library are these p2p programs using ? i am not too familiar with the concept of socket programming. could you make p2p program using Qt4 ?

i've been wondering about this question since the Napster days.

how would you also go about creating the next "bitorrent" ? is this by using similar socket libraries ?

what's the latest in p2p technology ? are there any news sites? what's the future hold for p2p ?

A: 

...Peer 2 Peer


The GUI can certainly be developed in Qt (as you are planning to).

For the backend p2p network handling, Check this out:

You might also want to look at this:

GoodLUCK!!

CVS-2600Hertz
+1  A: 

Peer-to-peer sharing the way Napster worked only makes sense when you have lots of people sharing files. It's a bit of a chicken-and-egg problem, but it all comes down to this: no-one uses a network no-one uses. It's the same with social networks et al.

That being said, Qt4 does include a Network module which supports UDP and TCP, the basis for communicating over the Internet. There is documentation and example code availible here.

As for your last question: I think the future for P2P is full of pain and suffering. Big Content is after the most-used 'feature' of p2p networking: sharing music and movies. Your opinion may be different.

Scavenger
+1  A: 

P2P or Peer-to-Peer is a very hard type of program to create, mostly because of its very structure. Most internet applications are Client-Server this is because a lot of headaches are solved just by having a fixed server you know you can connect to. At the end of the day, that's more or less all Napster did, it just indexed files and said who is currently hosting them.

The other problem with creating P2P software, is that developing it on your own, you will have very few peers to test with, even if you do create a bunch of virtual computers. You will find it hard to test it scaled to 00's of users.

First steps though, you will need to learn to program in a suitable language, something like C++ or C# maybe just make it as a console application to learn the technology.

Next, learn how to work with files. Not much use if you can't save stuff is it.

Networking next. Start with a client-server set up just to get to grips with transferring files. Make a server app that gives the files and a client app that downloads it. Then start to scale it to one server giving files to lots of clients.

Final step is to merge the client and server so that as the peer downloads more of the file, it can start to be a server and let other clients download from it.

If you want, now you can think about a GUI.

thecoshman

related questions