java - 使用 FTP 进行文件传输的代码可以打开或关闭多个连接吗?

标签 java exception ftp

给出这个简单的两步伪代码: 1. 请求文件列表 2.下载各个文件

每个步骤都需要打开一个新连接。对于步骤 2,还会为每个需要下载的文件打开一个新连接。我认为这样编码的原因是遇到任何FTP异常(例如421,连接关闭),其他文件的下载将继续进行(当然除非步骤1遇到错误,因此没有后续步骤2)将会发生)。

我是 FTP 新手,所以这个问题一直困扰着我。

最佳答案

是的,这很正常。 FTP是一个两个连接的协议(protocol)。命令流(get、put、dir、cd 等)和数据流(来回发送的实际文件)。命令流在连接期间保持打开状态(并被视为“连接”)。数据流仅在发送/检索数据时存在,并且在典型的 FTP session 中会多次打开/关闭。

数据连接的来源取决于您使用的是主动还是被动 FTP。对于 Activity 连接,ftp 服务器将启动返回客户端的数据连接。这是通过客户端说“执行‘dir’命令,并将其结果发送回 IP x.x.x.x,端口 yyy”来完成的。被动的工作方式相反。客户端发起到服务器的所有连接,做dir基本上就是。 “给我一个目录列表”并返回“好的,目录数据可在 IP x.x.x.x、端口 YYY 上获得 - 来获取它”。

在协议(protocol)级别,客户端将发送 PORT x.x.x.x.y.z 通知服务器在端口 (y * 256)+z 上的 x.x.x.x 打开一个主动模式数据通道连接回客户端。客户端发送PASV请求被动模式;在这种情况下,服务器的响应包含 x.x.x.x.y.z 告诉客户端在 ip 和端口上打开连接

关于java - 使用 FTP 进行文件传输的代码可以打开或关闭多个连接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7335486/

相关文章:

linux - 仅通过 FTP 访问获取服务器信息

ftp - public_html 文件夹不可见

java - 如何控制 ParallelSuite 线程数?

java - 使用 Spring Security 的 SpringMVC Websockets 消息传递用户身份验证

具有相同名称的 Java 枚举和字段

java - 在 Java 中抛出自定义异常与内置异常

c# - 使用 FluentFTP 连接到 FTPS(FTP over SSL)

java - Debezium kafka测试集群,用于带有gradle的单元测试

python - 让异常自己产生

java - 是否可以将 try 与资源和输入流一起使用?