Java FTPClient上载文件=SocketException:连接重置

Java FTPClient上载文件=SocketException:连接重置,java,android,ftp,xampp,apache-commons-net,Java,Android,Ftp,Xampp,Apache Commons Net,我正在尝试使用XAMPP和FileZilla通过FTP上传一个简单的txt文件。 我正在使用。 这是我的代码,非常基本的东西: FTPClient client = new FTPClient(); InputStream in = new ByteArrayInputStream("IT WORKS! :D".getBytes()); try { client.connect("localhost"); client.login("user", "password");

我正在尝试使用XAMPP和FileZilla通过FTP上传一个简单的txt文件。
我正在使用。
这是我的代码,非常基本的东西:

FTPClient client = new FTPClient();
InputStream in = new ByteArrayInputStream("IT WORKS! :D".getBytes());

try {
    client.connect("localhost");
    client.login("user", "password");
    client.enterLocalPassiveMode();
    client.storeFile("textfile.txt", in);
} finally {
    try {
        in.close();
        client.logout();
        client.disconnect();
    } catch (Exception e) {
    }
}

但是。。。storeFile()抛出一个java.net.SocketException:

Exception in thread "main" java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:189)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at java.io.BufferedReader.fill(BufferedReader.java:154)
    at java.io.BufferedReader.read(BufferedReader.java:175)
    at org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58)
    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:310)
    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:290)
    at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:474)
    at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:547)
    at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:596)
    at org.apache.commons.net.ftp.FTP.pasv(FTP.java:945)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:719)
    at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:551)
    at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:1704)
    at ftpexample.ftpexample.main(ftpprova.java:17)

有什么问题吗??:( 我还尝试了在线托管服务,结果也是一样…

我想知道这是防火墙还是windows服务相关的问题???

老实说,我不确定,但您应该尝试以下方法:

使用类似于以下代码的代码:

System.out.println(client.getReplyCode());
for(String s : client.getReplyStrings())
    System.out.println(s);
client.login(“用户”、“密码”);
之后验证连接状态

如果您没有从上面的代码中得到任何好的提示,请在调用
client.storeFile(“textfile.txt”,in);
后尝试添加
client.completePendingCommand();


祝你好运!:)

通过在命令提示符下以管理员身份运行此命令来解决此问题。

netsh advfirewall set global StatefulFTP disable
据报道,这是Windows计算机上的Java 7错误。

设置:

client.setuseepsvhitipv4(true)


如果您无法更改Windows的防火墙设置,则可以使用此选项。

谢谢您的回答:)通过打印回复和调用
client.completePendingCommand()
230可以使用相同的
SocketException
,我将获得“230登录”。我仔细检查了一遍,只有当您使用
storeFileStream
方法(您可能希望尝试作为替代方法)时,
completePendingCommand()
才是必需的。引发异常的是哪行代码?服务器中是否创建了任何文件(可能是空的)?我希望我在4小时前看到这个答案,这样我就不会感到沮丧了。这与我遇到的问题完全相同,而且这个修复非常有效。非常感谢。在我的案例中,相同的错误消息是由VSFTPD的错误配置引起的: