Ftp主动模式和被动模式以及java链接ftp模式设置

(1) PORT(主动模式)html

PORT中文称为主动模式,工做的原理: FTP客户端链接到FTP服务器的21端口,发送用户名和密码登陆,登陆成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,经过服务器的20端口和客户端开放的端口链接,发送数据,原理以下图。java

 

 (2) PASV(被动模式)服务器

    PASV是Passive的缩写,中文成为被动模式,工做原理:FTP客户端链接到FTP服务器的21端口,发送用户名和密码登陆,登陆成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),而后把开放的端口告诉客户端, 客户端再链接到服务器开放的端口进行数据传输,原理以下图:url

    2.两种模式的比较htm

     从上面的运行原来看到,主动模式和被动模式的不一样简单概述为: 主动模式传送数据时是“服务器”链接到“客户端”的端口;被动模式传送数据是“客户端”链接到“服务器”的端口。blog

    主动模式须要客户端必须开放端口给服务器,不少客户端都是在防火墙内,开放端口给FTP服务器访问比较困难。登录

    被动模式只须要服务器端开放端口给客户端链接就好了。原理

参考文献 http://www.cnblogs.com/mawanglin2008/articles/3607767.html服务器端

3.java中,内网用被动模式 ,外网链接时用主动模式,服务器相应改动(只用上线功能用被动模式去链接ftp报错链接不上)ftp

FTPClient ftpClient = new FTPClient();

ftpClient.connect(url, port);

ftpClient.enterLocalActiveMode();    //主动模式 // ftpClient.enterLocalPassiveMode(); 被动模式 ftpClient.setControlEncoding("UTF-8"); ftpClient.changeWorkingDirectory(path);

相关文章
相关标签/搜索