发布于 

ftps上传遇到到的一些坑

接上次ftps部署上传在实际使用部署过程中遇到的一些问题,由于实际使用时对接的是第三方部署好的ftps服务器碰到的一些问题

1.未设置ftps连接超时时间导致在进行连接失败时线程阻塞卡死

首次连接时发现开始连接后就没有连接成功日志,同样也没有报错日志,这时只能在每一步进行时添加对应的日志打印,然后发现线程执行到ftpsClient.connect(host, port)时就没有下一步的日志了,添加连接超时失败时间,防止线程卡死;

1
2
3
4
// 设置连接超时时间为30秒
ftpsClient.setConnectTimeout(30*1000);
// 设置读取超时时间也为30秒
ftpsClient.setDataTimeout(30*1000);

2.对方ftps服务器设置了安全模式为隐式模式导致连接超时无法连接

设置超时时间后发现到超时时间后依然无法成功连接到对方ftps服务器,由于对方没有技术回答问题只能不断尝试后发现设置的隐式模式,创建ftps对象时不设置安全模式会默认为使用显示模式;

创建连接对象时设置安全模式为显示

1
FTPSClient ftpsClient = new FTPSClient("TlS",true);

3.由于双方都使用了路由器NAT进行ip映射导致ftps无法连接

由于环境原因双方服务器都在路由器下局域网环境部署,内网访问需要通过路由器进行NAT转接后才能访问,导致无法连接,详细原因参考https://blog.csdn.net/cheng_fangang/article/details/7395442 这个大佬的分析,解决方法添加NAT特殊设置

1
2
// 设置重定向地址为连接ftps服务器的真实地址
ftpsClient.setPassiveNatWorkaroundStrategy((hostname -> host));

本站由 @binvv 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。