org.apache.commons.net.ftp.FTPClient 下载文件提示Software caused connection abort: recv failed

本文涉及的产品
云防火墙,500元 1000GB
简介: 今天在使用FTPClient下载文件时,登录成功了,但是提示下图所示的错误信息:   出现这个问题,本以为设置的读取文件目录不对,尝试修改多次无果。为了排除路径的问题,在firefox中安装了插件“FireFTP”,连接上之后,可以正常下载,于是该问题排除。

今天在使用FTPClient下载文件时,登录成功了,但是提示下图所示的错误信息:

异常信息

 

出现这个问题,本以为设置的读取文件目录不对,尝试修改多次无果。为了排除路径的问题,在firefox中安装了插件“FireFTP”,连接上之后,可以正常下载,于是该问题排除。

后来在http://blog.csdn.net/wangjinwei6912/article/details/6603152 看到这位朋友的提示防火墙的问题,于是打开系统的防火墙,发现系统的防火墙都是开着的,如下图所示:

开着的系统防火墙

尝试把防火墙关闭,再次运行程序,发现文件能够正常下载了。如下图所示:

文件下载成功

此问题解决。

 

更深层次解析:

FTP 的连接模式有两种:主动模式和被动模式,我们的程序是采用主动模式来连接到ftp服务器的。(主动模式和被动模式的区别请参照:http://jackiechen.blog.51cto.com/196075/193883/),我们摘抄关于主动模式的相关说明如下:

      主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。

    针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:    

    1. 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接) 

    2. FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)

    3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)

    4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)

从第3条,可以看出服务器端时会主动向客户端进行连接的,所以,本地需要关闭防火墙才能完成数据的下载。

目录
相关文章
|
9天前
|
网络安全 Windows
Jetson 学习笔记(十五):FTP协议传输文件
本文介绍了如何使用WinSCP软件通过FTP协议在Windows和Jetson设备之间传输文件,并分享了一些操作经验和技巧。
14 0
Jetson 学习笔记(十五):FTP协议传输文件
|
12天前
|
网络协议 Linux
搭建FTP报错:Job for vsftpd.service failed because the control process exited with error code. See
搭建FTP报错:Job for vsftpd.service failed because the control process exited with error code. See
24 3
|
9天前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
|
1月前
.NET 压缩/解压文件
【9月更文挑战第5天】在 .NET 中,可利用 `System.IO.Compression` 命名空间进行文件的压缩与解压。首先引入相关命名空间,然后通过 GZipStream 类实现具体的压缩或解压功能。下面提供了压缩与解压文件的方法示例及调用方式,便于用户快速上手操作。
|
2月前
|
Java Windows 容器
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
成功解决:Failed to load resource: net::ERR_FILE_NOT_FOUND
这篇文章提供了解决"Failed to load resource: net::ERR_FILE_NOT_FOUND"错误的步骤,通过修改配置文件中的资源路径设置为相对路径"./"来成功运行打包后的项目。
成功解决:Failed to load resource: net::ERR_FILE_NOT_FOUND
|
2月前
|
前端开发
Request method ‘POST‘ not supported。 Failed to load resource: net::ERR_FAILED
这篇文章讲述了在前后端分离的项目中,由于前端错误地使用了GET请求方法而不是支持的POST,导致请求被后端拒绝的问题,并提供了相应的解决方法和HTTP方法的CRUD映射知识。
Request method ‘POST‘ not supported。 Failed to load resource: net::ERR_FAILED
|
2月前
|
C#
一款.NET开源、跨平台的DASH/HLS/MSS下载工具
一款.NET开源、跨平台的DASH/HLS/MSS下载工具
|
2月前
|
开发框架 .NET Linux
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
|
2月前
|
Oracle 关系型数据库
Navicat 连接Oracle ORA-28547: connection to server failed, probable Oracle Net admin error
Navicat 连接Oracle ORA-28547: connection to server failed, probable Oracle Net admin error
94 0

推荐镜像

更多