美文网首页
Apache Commons Net——FTP

Apache Commons Net——FTP

作者: haha_writing | 来源:发表于2020-09-11 16:35 被阅读0次

    Apache Commons Net库包含了一组网络实用程序和协议实现。支持的协议包括Echo,Finger,FTP, NNTP,NTP,POP3(S),SMTP(S), Telnet, Whois等。

    FTP功能支持的文件类型包括FTP.ASCII_FILE_TYPE和FTP.BINARY_FILE_TYPE。

    POM中的依赖配置:

         <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.7</version>
         </dependency>
    

    FTPClient

    FTPClient封装了从FTP服务器存储和检索文件所需的所有功能。这个类处理了与FTP服务器交互的所有底层细节,并提供了一个方便的高级接口。和其他从SocketClient派生的所有类一样,在执行任何操作之前,必须使用connect连接到服务器,然后通过FTP reply code来确认是否连接成功。在完成交互之后,必须断开连接。

    需要注意,如果某个客户端连接空闲时间超过配置(通常为900秒),FTP服务器会提前关闭连接。在数据传输期间,数据连接很忙,但是控制连接空闲。FTP服务器知道控制连接正在使用,所以不会因为它缺乏活动而将其关闭, 但是,网络路由器并不了解控制连接和数据连接之间的关联性。一些路由器会将控制连接视为空闲,从而将其断开。

    一种解决方案就是发送安全命令,例如NNOP,重置路由器的空闲计时器,例如:
    ftpClient.setControlKeepAliveTimeout(300);//将超时设为5分钟。
    这将导致文件上传/下载方法大约每5分钟发送一个NOOP。

    FTPClient的默认设置是:
    1.FTP.ASCII_FILE_TYPE,
    2.FTP.NON_PRINT_TEXT_FORMAT
    3.FTP. STREAM_TRANSFER_MODE,
    4.FTP.FILE_STRUCTURE。

    常用代码

         FTPClient  ftp = new FTPClient();
         FTPClientConfig config = new FTPClientConfig();
         //......设置
          ftp.configure(config);
          boolean error = false;
          try {
              int reply;
              String server = "ftp.example.com";
              ftp.connect(server);       
              reply=ftp.getReplyCode();
              if(!FTPReply.isPositiveCompletion(reply)){
                     ftp.disconnect(); // 连接失败
               }else{
                    ftp.login(username, password);
                    f.changeWorkingDirectory(remotePath);
                    FTPFile [] files = f.listFiles();
                    //......
                   
               }
    
          }catch(IOException e){
            //......
         }finally{
                if(ftp.isConnected()){
                        try{
                            ftp.disconnect();
                        }catch(IOException e){
                             //......
                        }
                }
         }
    

    相关文章

      网友评论

          本文标题:Apache Commons Net——FTP

          本文链接:https://www.haomeiwen.com/subject/yrdvektx.html