Linux环境下FTP传输文件无反应

3 篇文章 0 订阅

前提条件:

本地Windows服务器下,文件上传运行正常,部署jar包Linux环境上,上传文件无反应;

1 在FTP服务中,涉及到客户端和服务器端的连接,连接就会涉及到端口的打开问题;

2 而端口的打开中,又涉及到主动模式和被动模式。

     主动模式:客户端开放端口给服务端用;

     被动模式:服务端开放端口给客户端用。

由于很多客户端在防火墙内,开放端口给服务器端用比较困难。所以用被动模式的时候比较多。

所以在storeFile(),listFiles()时之前需要调用  

                                      ftpClient.enterLocalPassiveMode();

这个方法的意思就是每次数据连接之前,ftp Client告诉ftp server开通一个端口用来传输数据。

 

/**
 * 请求连接Ftp
 * @param host
 * @param port
 * @param username
 * @param password
 * @return
 * @throws IOException
 */
private static FTPClient getConnect(String host, int port, String username, String password) {
    FTPClient ftp = new FTPClient();
    //1、定义返回的状态码
    int reply;
    try {
        //2、连接ftp(当前项目所部署的服务器和ftp服务器之间可以相互通讯,表示连接成功)
        ftp.connect(host, port);
        //3、输入账号和密码进行登录
        ftp.login(username, password);
        //4、接受状态码(如果成功,返回230,如果失败返回503)
        reply=ftp.getReplyCode();
        //5、根据状态码检测ftp的连接,调用isPositiveCompletion(reply)-->如果连接成功返回true,否则返回false
        if(!FTPReply.isPositiveCompletion(reply)){
            ftp.disconnect();//说明连接失败,需要断开连接
            return null;
        }
        ftp.enterLocalPassiveMode();// 这个方法的意思就是每次数据连接之前,ftp client告诉ftp server开通一个端口来传输数据。
    } catch (IOException e) {
        e.printStackTrace();
    }
    return ftp;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值