“FTP”客户端 - 用于下载文件的新套接字连接?

时间:2015-08-03 16:18:33

标签: java sockets ftp

我目前正在JavaFX中创建自己的“ftp”客户端和服务器。

我会尝试描述我的问题:

  1. FTP客户端连接并应用用户名和密码
  2. 如果凭据有效,服务器会为客户端创建一个新线程,让客户端浏览文件夹和文件。 (这里一切正常)

  3. 现在我想知道的是,如果客户决定下载文件,客户端是否需要与服务器建立新连接?因为我认为每个下载都需要由一个单独的套接字和一个单独的线程来处理,这是正确的吗?我能想到的唯一方法是建立一个新的连接,并在后台再次应用凭据,并发送文件的路径下载..

  4. 这是一个很好的解决方案吗?

    服务器仅使用一个服务器套接字。我没有使用任何apache库或类似的东西。

    我会很感激我能得到的所有答案和想法。

    谢谢

1 个答案:

答案 0 :(得分:1)

  

因为我认为每个下载都需要由一个单独的套接字和一个单独的线程来处理,这是正确的吗?

FTP需要为每个数据传输建立新连接,即目录列表和文件上传和下载。这个新连接意味着一个不同的套接字,但并不意味着在每种情况下都有一个新线程(在同一个线程中有多种方法可以使用多个套接字,详细信息超出了这个问题的范围)。

  

...再次申请凭据......

凭据不会再次应用。而是客户端或服务器为数据连接创建动态端点,并将详细信息发送给对等方。只有数据本身才能在这个连接中进行交换,即每个设法连接到具有预期源地址(可能是源端口)的套接字的人都将被视为可信任。

有关我建议研究该标准的协议的详细信息,即RFC 959