zoukankan      html  css  js  c++  java
  • 纪念使用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)

  • 相关阅读:
    CQUOJ 10819 MUH and House of Cards
    CQUOJ 9920 Ladder
    CQUOJ 9906 Little Girl and Maximum XOR
    CQUOJ 10672 Kolya and Tandem Repeat
    CQUOJ 9711 Primes on Interval
    指针试水
    Another test
    Test
    二分图匹配的重要概念以及匈牙利算法
    二分图最大匹配
  • 原文地址:https://www.cnblogs.com/jiliunyongjin/p/10653624.html
Copyright © 2011-2022 走看看