微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apache Commons FTPSClient上传无法完成

如何解决Apache Commons FTPSClient上传无法完成

我正在使用commons-net 3.7和OpenJDK11。FTP服务器是TLSv1.2隐式的。 我可以检索文件,但是当我尝试存储文件时,它会挂起。当我检查storeFile的socket.close();方法调用时,等待输入。

我尝试将InputStream复制到OutputStream的方式。当我尝试关闭OutputStream时,也会发生同样的事情。等待,并发生相同的错误

为什么无法关闭套接字并结束存储文件?谢谢。

        FTPSClient ftpsClient = new FTPSClient(true);
        ftpsClient.connect("host",990);
        ftpsClient.enterLocalPassiveMode();
        ftpsClient.setFileType(FTP.BINARY_FILE_TYPE);
        ftpsClient.setControlKeepAliveTimeout(300);
        ftpsClient.setBufferSize(1024000);
        ftpsClient.login("user","password");
        // login is successful,everything seems fine
    
        InputStream inputstream = new FileInputStream("test.pdf");
        ftpsClient.storeFile("/upload",inputstream); 
        // waits 4-5 minutes and gets connection reset
        // I can retrieve and delete files,only uploading is problem.
  09B0: 62 6A 47 BA 9F F4 9B 74   BE E0 07 0B F5 63 92 C0  bjG....t.....c..
  09C0: 2C 26 B6 36 98 3C 83 D4   A4 3F 3C 99 72 6B 24 45,&.6.<...?<.rk$E
  09D0: FE 9F 3E F4 DA 3B CB B2   18 12 F0 FB 85           ..>..;.......
)
javax.net.ssl|ALL|01|main|2020-09-01 01:31:25.414 CEST|SSLSocketImpl.java:1002|Closing output stream
javax.net.ssl|DEBUG|01|main|2020-09-01 01:31:25.415 CEST|SSLSocketImpl.java:670|close outbound of SSLSocket
javax.net.ssl|DEBUG|01|main|2020-09-01 01:31:25.417 CEST|SSLSocketoutputRecord.java:71|WRITE: TLS12 alert(close_notify),length = 10
javax.net.ssl|DEBUG|01|main|2020-09-01 01:31:25.418 CEST|SSLCipher.java:1727|Plaintext before ENCRYPTION (
  0000: 01 00                                              ..
)
javax.net.ssl|DEBUG|01|main|2020-09-01 01:31:25.418 CEST|SSLSocketoutputRecord.java:85|Raw write (
  0000: 15 03 03 00 1A 00 00 00   00 00 00 00 11 1B EB DE  ................
  0010: 1F A8 2E 8B DE 84 26 1F   FD E6 23 C4 81 E7 BC     ......&...#....
)
javax.net.ssl|DEBUG|01|main|2020-09-01 01:31:25.418 CEST|SSLSocketImpl.java:473|duplex close of SSLSocket
javax.net.ssl|DEBUG|01|main|2020-09-01 01:31:25.418 CEST|SSLSocketImpl.java:1361|close the underlying socket
javax.net.ssl|DEBUG|01|main|2020-09-01 01:31:25.419 CEST|SSLSocketImpl.java:1380|close the SSL connection (initiative)
javax.net.ssl|DEBUG|01|main|2020-09-01 01:31:25.419 CEST|SSLSocketImpl.java:1408|wait for close_notify or alert
javax.net.ssl|ERROR|01|main|2020-09-01 01:38:14.945 CEST|TransportContext.java:313|Fatal javax.net.ssl|WARNING|01|main|2020-09-01 01:38:14.947 CEST|SSLSocketImpl.java:494|SSLSocket duplex close Failed (
"throwable" : {
  javax.net.ssl.SSLProtocolException: Connection reset
    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:126)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:264)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:259)
    at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:137)
    at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1152)
    at java.base/sun.security.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1413)
    at java.base/sun.security.ssl.SSLSocketImpl.closeSocket(SSLSocketImpl.java:1389)
    at java.base/sun.security.ssl.SSLSocketImpl.shutdown(SSLSocketImpl.java:1370)
    at java.base/sun.security.ssl.SSLSocketImpl.bruteForceCloseInput(SSLSocketImpl.java:603)
    at java.base/sun.security.ssl.SSLSocketImpl.duplexCloseInput(SSLSocketImpl.java:583)
    at java.base/sun.security.ssl.SSLSocketImpl.close(SSLSocketImpl.java:484)
    at org.apache.commons.net.ftp.FTPClient._storeFile(FTPClient.java:686)
    at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:645)
    at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:2037)
    at my.project.package.util.ftputil.main(ftputil.java:51)
  Caused by: java.net.socketException: Connection reset
    at java.base/java.net.socketInputStream.read(SocketInputStream.java:186)
    at java.base/java.net.socketInputStream.read(SocketInputStream.java:140)
    at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:448)
    at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:165)
    at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:108)
    ... 11 more}


425 Data channel timed out due to not meeting the minimum bandwidth requirement.
SERVER: 425 Data channel timed out due to not meeting the minimum bandwidth requirement.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?