Hallo liebe Forenmitglieder,
ich bin neu in der C# Entwicklung und will einen Ftpclienten programmieren, der auch für Drftpd funktioniert. Drftpd hat spezielle Eigenheiten nämlich den PRET Befehl. Da die normal Ftp Library von Microsoft diesen Befehl nicht unterstützt, habe ich mich für die System.Net.Ftpclient.dll von netftp.codeplex.com entschieden, da diese laut Doku den PRET Befehl unterstützt. Ich habe jedoch ein Problem mit dem File Listing.
Folgenden Code benutze ich:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| void connectbuttonclick (object sender, EventArgs e) { FtpClient client = new FtpClient(); client.Host = ****; client.Port = *****; client.Credentials = new NetworkCredential(user, pass); client.Connect(); client.BeginGetListing(new AsyncCallback(GetListingCallback), client); }
static void GetListingCallback(IAsyncResult ar) { FtpClient client = ar.AsyncState as FtpClient;
try { if (client == null) throw new InvalidOperationException("The FtpControlConnection object is null!");
foreach (FtpListItem item in client.EndGetListing(ar)) Console.WriteLine(item); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { System.Threading.Thread.Sleep(10); } |
und erhalte folgende Fehlermeldung vom DrFTPD-Server:
500 You need to use a client supporting PRET (PRE Transfer) to use PASV
Ich habe schon in den Source der Library geschaut und dort wird nach dem FEAT Befehl nach PRET gesucht und sofern gefunden, wird ein Parameter gesetzt. Ich habe bereits mit einem anderen Ftpclienten zum DrFTPD verbunden und geschaut was denn FEAT liefert und siehe da es kommt in der zweiten Zeile PRET. Ich habe keine Ahnung woran das noch liegen könnte, vielleicht könnt ihr mir weiterhelfen.
Grüße
Moderiert von Th69: B- durch C#-Tags ersetzt