【发布时间】:2010-04-20 09:15:00
【问题描述】:
我怎样才能自己做午睡?这些 p2p 程序使用哪个库?我对套接字编程的概念不太熟悉。你能用 Qt4 制作 p2p 程序吗?
自从 Napster 时代以来,我一直在想这个问题。
您还打算如何创建下一个“bitorrent”?这是通过使用类似的套接字库吗?
最新的 p2p 技术是什么?有新闻网站吗? p2p 的未来会怎样?
【问题讨论】:
标签: p2p
我怎样才能自己做午睡?这些 p2p 程序使用哪个库?我对套接字编程的概念不太熟悉。你能用 Qt4 制作 p2p 程序吗?
自从 Napster 时代以来,我一直在想这个问题。
您还打算如何创建下一个“bitorrent”?这是通过使用类似的套接字库吗?
最新的 p2p 技术是什么?有新闻网站吗? p2p 的未来会怎样?
【问题讨论】:
标签: p2p
P2P 或 Peer-to-Peer 是一种很难创建的程序类型,主要是因为它的结构。大多数互联网应用程序都是客户端-服务器,这是因为只需拥有一个您知道可以连接的固定服务器就可以解决很多问题。归根结底,Napster 所做的或多或少都是如此,它只是为文件编制索引并说明当前是谁在托管它们。
创建 P2P 软件的另一个问题是,如果你自己开发它,即使你创建了一堆虚拟计算机,你也很少有同行可以测试。你会发现很难测试它扩展到 00 的用户。
不过,第一步,您需要学习使用合适的语言进行编程,例如 C++ 或 C#,可能只是将其作为控制台应用程序来学习该技术。
接下来,学习如何处理文件。如果你不能保存东西,那就没什么用了。
接下来是网络。从设置客户端-服务器开始,以便掌握传输文件。制作一个提供文件的服务器应用程序和一个下载文件的客户端应用程序。然后开始将其扩展到一台服务器,将文件提供给大量客户端。
最后一步是合并客户端和服务器,以便当对等方下载更多文件时,它可以开始成为服务器并让其他客户端从中下载。
如果你愿意,现在你可以考虑一个 GUI。
【讨论】:
只有当有很多人共享文件时,Napster 工作方式的点对点共享才有意义。这有点像先有鸡还是先有蛋的问题,但这一切都归结为:没有人使用网络 没有人使用。社交网络等也是如此。
话虽如此,Qt4 确实包含一个支持 UDP 和 TCP 的网络模块,这是通过 Internet 进行通信的基础。有可用的文档和示例代码here。
关于你的最后一个问题:我认为 P2P 的未来充满了痛苦和磨难。 Big Content 追求 p2p 网络最常用的“功能”:共享音乐和电影。您的意见可能不同。
【讨论】:
我找到了以下链接 - http://en.wikibooks.org/w/index.php?title=The_World_of_Peer-to-Peer_(P2P)/Building_a_P2P_System
它尚未完成,但可以让您了解在设计或创建自己的 P2P 网络时要考虑什么。
【讨论】:
如果我是你,我会下载非常流行的 P2P 程序(如 Frostwire)的源代码。 sourceforge 上有一堆源代码。没有什么比在一个可立即测试的完全运行的项目中看到所有内容如何组合在一起更好的了。功能齐全的代码非常值得学习。
http://sourceforge.net/projects/frostwire/
http://shareaza.sourceforge.net/
一旦您看到摆在您面前的艰巨任务……您可能不想再做这件事了。我只快速搜索了几个比较流行的源代码,但 Frostwire 可能是在 Limewire 之后最常用的。当我警告他们关于 P2P 时,我已经从成千上万的客户机器上删除了它(他们的孩子没有下载 Linux ISO):)
噢……我刚刚注意到上面的日期。好吧,我已经把它打出来了,如果你真的开始从事这个项目,我相信你还在努力:)
【讨论】: