如何制作自己的P2P软件?

29

如何制作自己的Napster?这些P2P程序使用哪个库?我对套接字编程的概念不太熟悉。您能否使用Qt4制作P2P程序?

自从Napster时代以来,我一直在思考这个问题。

如果要创建下一个“BitTorrent”,应该如何操作?是否需要使用类似的套接字库?

P2P技术目前最新进展是什么?有哪些新闻网站?P2P的前景如何?

4个回答

23

P2P或点对点是一种非常难以创建的程序类型,主要是由于其结构非常复杂。大多数互联网应用程序都是客户端 - 服务器模式,这是因为只需拥有一个固定的服务器你就可以连接了很多头疼问题得到解决。在一天结束时,那基本上就是 Napster 所做的所有事情,它只是索引文件并告知当前正在托管它们的人。

创建P2P软件的另一个问题是,如果您自己开发,那么您将只有非常少量的同行进行测试,即使您创建了许多虚拟计算机,也很难测试它扩展到数百个用户。

首先,您需要学习编程适合的语言,例如C++或C#,也许只需制作一个控制台应用程序来学习技术。

接下来,学习如何处理文件。如果不能保存东西,那没什么用处。

紧接着是网络。从客户端 - 服务器设置开始,仅仅是为了熟悉文件传输。制作一个提供文件的服务器应用和一个下载它的客户端应用。然后开始将其扩展到一个服务器向许多客户端提供文件。

最后一步是合并客户端和服务器,以便当对等方下载更多的文件时,它可以开始成为服务器并让其他客户端从它那里下载。

如果您愿意,现在可以考虑 GUI。


7

只有大量用户共享文件时,点对点分享(类似Napster的工作方式)才有意义。这是一个先有鸡还是先有蛋的问题,但归根结底:没有人使用的网络就没有人使用。社交网络等也是如此。

话虽如此,Qt4确实包含了一个网络模块,支持UDP和TCP,这是通过互联网进行通信的基础。这里提供了文档和示例代码here

至于你最后的问题:我认为P2P的未来充满痛苦和折磨。大型内容提供商正在追求P2P网络的最常用“功能”:共享音乐和电影。你的观点可能不同。


4

3
如果我是你,我会下载像Frostwire这样非常流行的P2P程序的源代码。在sourceforge上有一堆源代码。最好的方法是看到如何将所有内容组合成一个完全运行的项目,可以立即进行测试。完全功能的代码非常适合学习。

http://sourceforge.net/projects/frostwire/

http://shareaza.sourceforge.net/

一旦你看到眼前艰巨的任务... 你可能就不想再做了。我只是快速搜索了一下几个较受欢迎的软件的源代码,但Frostwire可能是继Limewire之后最常用的。当我警告他们关于P2P(他们的孩子没有下载Linux ISO时)时,我已经将其从成千上万台客户机器中删除了:)
哦,我刚刚注意到这个日期。好吧,我已经输入了这个,如果你真的开始着手这个项目,我相信你仍然在工作:)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接