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)