hallo zusammen,
ich habe im Internet gegoogelt, jedoch keine Lösung zum folenden Problem gefunden, welches auch hier beschrieben, jedoch keine Lösung angebotenwird
Ganymed SSH-2 "Illegal sftp packet len" -KaCode
Ich benutze die SFTPv3Client -Klasse der opensource-java-Bibliothek ganymed-ssh2, um mir u.a. den Verzeichnis-Inhalt auf einem SFTP-Server anzuzeigen:
Dies funktioniert auch wunderbar solange es sich um einem SFTP-Server auf einer Linux-Maschine handelt.
Nun muss ich auf einen SFTP-Server (WS_FTP) auf einer Windows-Maschine zugreifen und den Verzeichnis-Inhalt anzeigen lassen; dies funktioniert auch solange sich nicht mehr als 194 Dateien in dem Verzeichnis befinden.
Sind es mehr als 194 Dateien, dann taucht folgende Fehlermeldung auf:
Wenn man sich den Quellcode im ch.ethz.ssh2.SFTPv3Client.scanDirectory(byte[]) anschaut, steht dort die Zeile
In ch.ethz.ssh2.SFTPv3Client.receiveMessage(int) befindet sich folgender Code:
Ich vermute mal, dass der Server Antwort-Paket(e) zurückschickt, der länger als 34000Bytes ist (sind).
Frage:
Wie kann ich dem Server sagen, dass er Pakete kleiner als 34000Bytes schicken soll?
Ist im SFTP-Standard festgeschrieben, dass versendete Server-Pakete nicht mehr als 34000 Bytes verschicken dürfen? Warum verschickt dann WS_FTP längere Pakete?
Danke für jede Antwort
ich habe im Internet gegoogelt, jedoch keine Lösung zum folenden Problem gefunden, welches auch hier beschrieben, jedoch keine Lösung angebotenwird
Ganymed SSH-2 "Illegal sftp packet len" -KaCode
Ich benutze die SFTPv3Client -Klasse der opensource-java-Bibliothek ganymed-ssh2, um mir u.a. den Verzeichnis-Inhalt auf einem SFTP-Server anzuzeigen:
Java:
SFTPv3Client client = new SFTPv3Client(conn);
Vector<SFTPv3DirectoryEntry> fileVector = client.ls("meinSFTPVerzeichnis");
Dies funktioniert auch wunderbar solange es sich um einem SFTP-Server auf einer Linux-Maschine handelt.
Nun muss ich auf einen SFTP-Server (WS_FTP) auf einer Windows-Maschine zugreifen und den Verzeichnis-Inhalt anzeigen lassen; dies funktioniert auch solange sich nicht mehr als 194 Dateien in dem Verzeichnis befinden.
Sind es mehr als 194 Dateien, dann taucht folgende Fehlermeldung auf:
Java:
java.io.IOException: Illegal sftp packet len: 34006
at ch.ethz.ssh2.SFTPv3Client.receiveMessage(SFTPv3Client.java:245)
at ch.ethz.ssh2.SFTPv3Client.scanDirectory(SFTPv3Client.java:724)
at ch.ethz.ssh2.SFTPv3Client.ls(SFTPv3Client.java:927)
Wenn man sich den Quellcode im ch.ethz.ssh2.SFTPv3Client.scanDirectory(byte[]) anschaut, steht dort die Zeile
Java:
byte[] resp = receiveMessage(34000);
In ch.ethz.ssh2.SFTPv3Client.receiveMessage(int) befindet sich folgender Code:
Java:
byte[] msglen = new byte[4];
readBytes(msglen, 0, 4);
int len = (((msglen[0] & 0xff) << 24) | ((msglen[1] & 0xff) << 16) | ((msglen[2] & 0xff) << 8) | (msglen[3] & 0xff));
if ((len > maxlen) || (len <= 0))
throw new IOException("Illegal sftp packet len: " + len);
Frage:
Wie kann ich dem Server sagen, dass er Pakete kleiner als 34000Bytes schicken soll?
Ist im SFTP-Standard festgeschrieben, dass versendete Server-Pakete nicht mehr als 34000 Bytes verschicken dürfen? Warum verschickt dann WS_FTP längere Pakete?
Danke für jede Antwort
Zuletzt bearbeitet von einem Moderator: