ftps上传遇到到的一些坑
接上次ftps部署上传在实际使用部署过程中遇到的一些问题,由于实际使用时对接的是第三方部署好的ftps服务器碰到的一些问题
1.未设置ftps连接超时时间导致在进行连接失败时线程阻塞卡死
首次连接时发现开始连接后就没有连接成功日志,同样也没有报错日志,这时只能在每一步进行时添加对应的日志打印,然后发现线程执行到ftpsClient.connect(host, port)时就没有下一步的日志了,添加连接超时失败时间,防止线程卡死;
1 | // 设置连接超时时间为30秒 |
2.对方ftps服务器设置了安全模式为隐式模式导致连接超时无法连接
设置超时时间后发现到超时时间后依然无法成功连接到对方ftps服务器,由于对方没有技术回答问题只能不断尝试后发现设置的隐式模式,创建ftps对象时不设置安全模式会默认为使用显示模式;
![](https://oscimg.oschina.net/oscnet/up-d668bdbf4a236f34ab24ad24224e9a8e550.png)
创建连接对象时设置安全模式为显示
1 | FTPSClient ftpsClient = new FTPSClient("TlS",true); |
3.由于双方都使用了路由器NAT进行ip映射导致ftps无法连接
由于环境原因双方服务器都在路由器下局域网环境部署,内网访问需要通过路由器进行NAT转接后才能访问,导致无法连接,详细原因参考https://blog.csdn.net/cheng_fangang/article/details/7395442 这个大佬的分析,解决方法添加NAT特殊设置
1 | // 设置重定向地址为连接ftps服务器的真实地址 |