在项目中使用commons-net-3.0.1.jar实现FTP文件的下载,在windows xp上运行正常,但是放到linux上,却出现问题,程序运行到
FTPClient.listFiles()或者FTPClient.retrieveFile()方法时,就停止在那里,什么反应都没有,出现假死状态。google一把,发现很多人也出现了此类问题,最终在一个帖子里找到了解决办法。在调用这两个方法之前,调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server可能每次开启不同的端口来传输数据,但是在linux上,由于安全限制,可能某些端口没有开启,所以就出现阻塞。OK,问题解决。
另外,如果程序部署在weblogic上, 也有可能出现一些问题,为什么,因为weblogic自己也有commons-net包,如果weblogic的jar包版本低于你使用的版本,就设置weblogic 的classpath,优先加载工程里的jar包。
问题的根源:
出现该问题的根源还是对ftp传输的两种模式理解不够清楚,下面介绍一下ftp的两种传输模式
FTP是有两种传输的模式的,主动模式和被动模式,之前一直没怎么去搞明白之,现在找了下资料,重新整理了下:
一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接。
1) 控制连接
客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。
2) 数据连接
FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
分享一个链接:
http://www.myexception.cn/apache/678705.html
相关推荐
9. **安全性**:虽然这里描述的是一个简单的FTP实现,但在实际应用中,FTP应考虑安全性,比如使用FTPS(FTP over TLS/SSL)或SFTP(SSH File Transfer Protocol)以加密传输数据。 通过研究这个项目,初学者不仅能...
这个“ftp链接传输工具.rar”文件是一个压缩包,包含了可能是一个FTP客户端软件,用户可以通过它来连接到FTP服务器,上传、下载或管理远程文件。下面将详细介绍FTP的工作原理、FTP客户端的使用方法以及可能包含在...
FTP数据传输类是为了方便程序员在应用程序中实现FTP功能而设计的,它通常包含了连接、登录、文件上传、文件下载以及断开连接等一系列操作。下面将详细讨论FTP数据传输类的核心知识点及其在实际开发中的应用。 1. ...
FTP(File Transfer Protocol)是一种基于TCP/IP协议的网络协议,用于在网络上进行文件传输。C语言实现FTP文件传输功能,涉及到的知识点广泛,包括但不限于网络编程、C语言编程基础、TCP/IP套接字编程以及文件操作等...
在“FTP文件传输课程设计”项目中,我们通常会学习如何实现一个基本的FTP客户端和/或服务器,这涉及到网络编程、多线程处理以及数据的加密和安全传输等知识。 1. **网络编程基础**:FTP的实现基于TCP/IP协议栈,...
它允许用户通过网络从一台计算机(FTP服务器)下载文件到另一台计算机(FTP客户端),或者将文件从本地计算机上传到远程服务器。在本项目中,我们使用C++编程语言实现了FTP文件传输程序,这涉及到了许多关键的技术点...
FTP(File Transfer Protocol)文件传输协议是互联网上广泛使用的文件传输机制,用于在不同系统间交换文件。FTP提供了交互式的访问方式,允许用户指定文件类型、格式,并处理存取权限,同时隐藏了不同计算机系统的...
本文将深入探讨FTP工具在Linux和Windows环境中的使用,以及如何利用它们进行文件传输。 标题提及的“ftp工具”通常指的是支持FTP协议的软件应用程序,这些工具提供用户友好的界面,简化了文件传输过程。Winscp是...
Windows Server 2012 R2 服务器建立 FTP 访问及无法与服务器建立连接相关问题解决 FTP(File Transfer Protocol)是一种常用的文件传输协议,用于在网络中传输文件。Windows Server 2012 R2 提供了一种简单的方式来...
在Windows操作系统中,自动FTP(File Transfer Protocol)脚本是一种常用的方法,用于定期或按需自动上传或下载数据到远程FTP服务器。这在备份、同步文件或者在不同系统间交换数据时非常有用。本文将详细介绍如何...
FTP(File Transfer Protocol)文件传输协议是互联网上用于在不同计算机之间交换文件的标准协议。它允许用户通过网络从远程服务器上传、下载文件,或者管理服务器上的文件。在本课设中,我们将使用Java编程语言来...
它支持FTP、FTPS(FTP over SSL/TLS)和SFTP(SSH文件传输协议),确保了数据的安全传输。以下是一些FileZilla的关键特性: 1. **多窗口界面**:FileZilla具有双窗格设计,让用户可以同时看到本地和远程文件系统,...
FTP测试备份
在使用FTP时,特别是涉及敏感数据时,推荐使用FTPS或SFTP以加密传输,防止数据在传输过程中被窃取。此外,确保使用强密码,并定期更新,以增加账户安全性。 总的来说,FileZilla是一款强大且易于使用的FTP客户端,...
"windows系统ftp文件传输工具"指的是专为Windows设计的,帮助用户通过FTP协议上传、下载和管理远程服务器上的文件的应用程序。 本文将详细讲解Windows系统下的FTP文件传输工具,以FileZilla为例,探讨其功能、使用...
FTP文件传输,局域网即可快速传输,高效、安全、可靠地进行文件传输并组织和管理文件型数据,助力企业用户应对大数据传输和云计算时代的新挑战,提升企业的运营效率和商业价值。内置高性能文件传输技术,大数据快速...
FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,它基于TCP(Transmission Control Protocol)提供可靠的数据传输服务。TCP是互联网协议栈中的传输层协议,它确保数据包在不可靠的网络环境...
数据传输系统,支持共享目录以及ftp数据的采集和分发.zip数据传输系统,支持共享目录以及ftp数据的采集和分发.zip数据传输系统,支持共享目录以及ftp数据的采集和分发.zip数据传输系统,支持共享目录以及ftp数据的...
FTP是一种标准网络协议,用于在Internet上从一个服务器传输文件到另一个服务器,或者从本地计算机到远程服务器。在Labview中,我们可以创建VI(Virtual Instruments)来实现这一功能,这为自动化测试、数据采集和...