1.Connection closed without indication
这个问题产生原因三种:
①连接超时和数据传输超时
解决办法:延长超时时间
//设置连接超时时间为60s ftpsClient.setConnectTimeout(60000) //设置数据超时时间为60s ftpsClient.setDataTimeout(60000)
②服务端最大连接数限制,比如FTP服务器设置最大用户访问数为2,3个用户同时连接,即可产生该问题
解决办法:服务器增大配置,减少程序访问服务器线程数
③security mode选择错误(Implicit/Explicit)
解决办法:
根据默认端口选择mode是一定不会错的

比如我的默认端口990,那么程序如下:
val ftpsClient = new FTPSClient("TLS", true)
2.java.security.cert.CertificateExpiredException: NotAfter
这个问题是证书过期了
解决办法:一个是更新证书,一个是忽略证书
更新证书就不写了,下面写如何忽略证书吧,默认端口990
//创建SSL上下文
val sslContext = SSLContext.getInstance("TLS")
//自定义证书,忽略已过期证书
val trustManager = new X509TrustManager {
override def getAcceptedIssuers = null
override def checkClientTrusted(x509Certificates: Array[X509Certificate], s: String): Unit = {}
override def checkServerTrusted(x509Certificates: Array[X509Certificate], s: String): Unit = {}
}
//初始化
sslContext.init(null, Array[TrustManager](trustManager), null)
//创建客户端,mode选择Implicit
val ftpsClient = new FTPSClient(true, sslContext)

942

被折叠的 条评论
为什么被折叠?



