当前位置 博文首页 > ftpclient的重置,ftpclient文件上传 connection reset问题

    ftpclient的重置,ftpclient文件上传 connection reset问题

    作者:xiaoyingying 时间:2021-08-16 14:34

        IIS7批量FTP管理功能说明:
        1、可批量导入,导出FTP信息
        2、其他ftp工具有的功能,我们也有
        3、特色功能:可以定时上传下载
        4、数据信息列表化、一眼就能知道那个是那个
        5、批量连接标签页式切换方便快捷
        6、7大连接模式更多好的兼容
        7、内嵌编辑器有效解决普通txt记事本乱码
        8、锁屏功能当程序有规定时间内没人操作,则自动锁程序。输入密码才可以正常操作
        本产品适用于:懒得记录FTP信息和有批量定时备份,上传下载的运维或站长。
        下载地址:http://ftp.iis7.com/
        图片:
        
        给项目开发了一个ftp组件(ftpclient)用来处理通用的上传下载的问题。今天出现一个很奇怪的问题,部署在A地的ftpclient去连接B地的ftpserver进行文件上传的时候出现connectionreset的异常。
        最开始怀疑ftpserver的问题,但用ftp客户端工具可以连上server,所以这个嫌疑排除。
        重新部署ftpclient到另外的一台服务器,发现问题不在重现,之后试了很多台服务器包括本地的windows开发机也没有这个问题。
        所以怀疑是A服务器本身的问题,可能是安全策略限制导致的。
        上网查了下资料,发现ftp数据传输有两种模式:FTPPort模式和FTPPassive模式
        于是在代码里面,在获取到ftp链接之后就将模式改成Passive模式,问题解决!
        ftpclient.enterLocalPassiveMode();
        stackoverflow的解释:
        “beforeyouinitiatetransfer.IsuspectyouneedtogetintoPASVmodefordatatransfer.Thiscanhappenincaseyouarebehindarouter(NAT)orafirewall.TheFTPserverwilltrytoconnecttoyoufordataconnectionbydefault,whichmeansyoustartlisteningonsomeportandinviteservertoconnecttoitfortransferofdata.Butincaseyouarebehindfirewallorrouter,theservercannotconnecttoyoudirectly.PASVmodeinstructsFTPservertoinsteadopenaportonserverfortransferandtheclientconnectstoit.”
        大体的意思是,设置FTPClient.enterLocalPassiveMode();在每次数据连接之前,ftpclient协商ftpserver开通一个端口来传输数据。
        原文链接:https://www.cnblogs.com/jager/p/6474009.html