• 纪念使用FTPClient工具所遇到的


    我所使用的是org.apache.commons.net.ftp.FTPClient。  查了资料还有其余几个FTPClient,其余的先不展开。

    1.ftpClient.changeWorkingDirectory一直返回false.

       我的解决方法是所传入的参数不能是ftp://ip地址/data/vcode/  这种形式的,而应该是/home/commonservice/data/vcode/这种形式的。网上查了很多方法也试了很多,都不对本次开发有效,有时候,是自己参数传的不对导致。

    2.从ftp服务器下载含图片的zip包,下载下来后解压失败,说是文件已损坏

       ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);加上这一句,以二进制的形式

    3.ftpClient.retrieveFileStream 读取服务器中的命名文件

       有以上这一行代码的话必须加

        is.close();

       ftpClient.completePendingCommand();

       这两行,否则接下来的 ftpClient的操作就会失败

    4.从ftp服务器下载的zip包到本地解压,解压失败

       有时不是你代码有问题,而是ftp服务器上的这个zip包本来就解压不出来。我就遇到这个问题了,查了半天代码都没查出来。

    5.主动模式和被动模式的概述

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

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

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

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

        被动模式只需要服务器端开放端口给客户端连接就行了。

    参考文献 http://www.cnblogs.com/mawanglin2008/articles/3607767.html

    6.附上FTPClient的文档

      http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html#changeWorkingDirectory(java.lang.String)

  • 相关阅读:
    android实现点击短链接进入应用 并获得整个连接的内容
    机房收费系统=三层+设计模式
    【数据库】SQL优化方法汇总
    HBase 数据库检索性能优化策略--转
    How to fix “HTTP Status Code 505 – HTTP Version Not Supported” error?--转
    使用VBS控制声音
    MSG命令使用详解
    bat删除系统默认共享
    C#:消息队列应用程序
    读写XML文档时,去掉新增加节点的“空命名空间”(xmlns=””)
  • 原文地址:https://www.cnblogs.com/jiliunyongjin/p/10653624.html
Copyright © 2020-2023  润新知