2011-04-19 70 views
0

嗨 我在学校有一项任务来编写一个p2p程序,并且我试图理解它背后的想法。我们被告知实施两个对象FileManager和NameServer:实施p2p程序

FileManager维护一组文件。它允许用户删除\重命名现有文件并从其他FileManagers获取 新文件。在启动时,FileManager F接收其文件列表和NameServers的列表 作为输入。然后,F将其名称和名称服务器名称的列表发送到其名称服务器上的所有NameServers列表

NameServer维护关于哪些文件存储在每个已知FileManager中的信息。 NameServer还有助于在FileManagers之间分发有关其他NameServer的信息。

所以我很难理解这两个对象之间的相互作用。 他们都在同一台机器上运行?我的意思是,在p2p中,每台机器都起着服务器的作用。 如果问题有点不清楚,我对此感到抱歉,因为整个任务对我来说还是有点不清楚。任何人都可以尝试帮助我理解?

+0

这是真的很难读,这不是一个好学校:) – dantuch 2011-04-19 13:19:49

+0

以及PDF文件是14页长,我不得不缩短它在某种程度上 – yotamoo 2011-04-19 13:24:07

+0

主机它@网页和链接在这里,我会稍后再尝试看看。 – dantuch 2011-04-19 13:29:30

回答

0

所以我很难理解 这两个 对象之间的相互作用。他们是否都在同一台 机器上运行?我的意思是,在p2p中,每台机器 都起着服务器的作用。

这意味着您的P2P系统上有两种类型的节点,功能上/逻辑上讲。一些充当FileManagers,一些充当NameServer。最终,一个真正的节点可以同时实现这两组功能,并同时充当FileManager和NameServer。

您可以将FileManagers和NameServers视为由对等实例提供的服务。希望这可以帮助。

+0

的想法,所以FileManager可以连接到多个NameServers。我应该在每个NameServer的不同线程中执行它吗? – yotamoo 2011-04-20 18:17:19

+0

你可以为一个小项目,但对于一个大项目,最好使用像Netty这样的库。 – JVerstry 2011-04-20 18:20:47

+0

哦,我们不允许使用非标准库。无论如何,只是为了让它100%清晰 - FileManager连接到NameServer的列表(从文本文件),他必须保持连接正确吗?如果它是正确的,那么当然我必须为每个连接运行一个新的线程。谢谢! – yotamoo 2011-04-20 18:39:59

1

据我可以告诉你的任务中没有假设FileManager和NameServer实例将运行。但即使如此,这也不应该影响您的解决方案,因为您必须使用IP地址和套接字。如果您必须与同一台机器上的实例进行通信,则只需使用127.0.0.1作为地址。