FTPClient Datei Upload = SocketException: Connection reset
Ich versuche zum hochladen eine einfache txt-Datei über FTP mit XAMPP und FileZilla.
Ich bin mit dem Apache-Commons-Net-3.0.1-Bibliothek.
Das ist mein code, sehr grundlegende Dinge:
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) {
}
}
Aber... storeFile() throws 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)
Was ist das problem?? 🙁
Ich versuchte auch auf ein online-hosting-service, mit dem gleichen Ergebnis...
Ich Frage mich, ob dies ist ein firewall-oder windows - " Diensten verbundenen problem??
- in meinem Fall die gleiche Fehlermeldung wurde verursacht durch eine falsche Konfiguration von VSFTPD: serverfault.com/questions/524695/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gelöst durch ausführen als administrator in der Eingabeaufforderung:
Dies ist ein Java-7-bug auf einem Windows-Rechner, es wird berichtet hier.
Ich bin ehrlich gesagt nicht sicher, aber Sie sollten versuchen, die folgenden:
Etwas wie den folgenden code:
nach
client.login("user", "password");
überprüfen den status Ihrer Verbindung an.Wenn Sie nicht bekommen, eine gute Hinweise aus dem obigen code nach dem aufrufen
client.storeFile("textfile.txt", in);
versuchen, hinzufügenclient.completePendingCommand();
.Glück! 🙂
SocketException
durch aufrufenclient.completePendingCommand()
completePendingCommand()
ist nur notwendig, wenn Sie diestoreFileStream
- Methode (die Sie vielleicht ausprobieren wollen, als alternative). Welche Zeile im code ist das werfen der exception? Gibt es eine Datei erstellt, in der server (vielleicht leer)?Set:
client.setUseEPSVwithIPv4( true );
Dies funktioniert, wenn Sie nicht ändern können Fenster firewall-Einstellungen.