在对等网络中的文件传输 - java

时间:2013-11-18 06:30:01

标签: java sockets network-programming p2p

我在对等网络上做一个类项目。以下是该项目的基本概述以及迄今为止我所做的工作:

项目概述:

  1. 有一个中央服务器,它跟踪所有同行。
  2. 中央服务器的角色很简单,只要 新对等 加入网络,它就会分配对等。
  3. 一旦形成网络,Peers就可以传输文件。
  4. 到目前为止我做了什么?

    我使用java作为编程语言并实现了以下内容:

    1. 为中央服务器和对等端编写代码。当对等体加入网络时,中心跟踪想要加入网络的对等体(通过将其添加到本地数据结构)并随机地将另一个对等体的信息发送给请求对等体(我正在发送主机名)和现有对等体的端口号)。通过这样做,我正在构建网络。
    2. 我需要帮助的地方?

      1. 我真的无法找出将文件从一个对等体传输到另一个对等体的最佳逻辑。对我来说更精确,让我们看一个例子:
      2. 假设我们的网络如下:

        节点A ---->节点B ----->节点C.                            (abc.txt)

        - - - - >表示节点虚拟连接。

        假设节点A是否按名称abc.txt请求文件,该如何下载文件?节点A没有关于Node C的信息。有人能告诉我实现这个的最简单方法吗?

        感谢。

2 个答案:

答案 0 :(得分:0)

你的陈述看起来很矛盾......

“我正在发送已经存在的对等体的主机名和端口号”。“节点A没有关于节点C的信息。”

有两种方法可以实现这一点。根据访问。 如果节点A可以使用其IP和端口访问节点C. - 您可以创建到节点C的套接字连接,并将文件从节点C复制到节点A.

如果节点A对节点A不可见 - 文件可能必须先上传到服务器,然后从服务器下载到节点A.

答案 1 :(得分:0)

亲爱的,你必须使用代理服务器,它将是包含所有对等体信息的中央服务器,因此首先连接到代理服务器,然后连接到所需的对等体并发送文件。为此,您必须在中央服务器转发数据的基础上向中央服务器发送一些其他信息。我不久前开发了这样的程序。

我开发了一个用于文本文件的对等体,一个用于音频文件的对等体,一个用于视频文件的对等体和一个用于图像文件的对等体,以及一个包含所有对等体的信息的中央服务器(代理服务器)。我正在向中央服务器发送文件,它决定在文件扩展名的基础上转发相关对等文件。