Hallo Leute,
kennt jemand eine einfache FTP-Server Klasse in C#?
Ich möchte mit dem Server lediglich Bilder empfangen, also nichts komplexes.
Oder kann man es mit C#-Board-Mitteln realisieren? (es muss unbedingt ftp sein)
Ich habe übrigens auf diversen seiten schon gesucht, da gibts nur eine C++-Klasse...
Vielen Dank für eure Mühe!
Gruß
Steffen
Hallo steffen_doc,
vielleicht hilft Die das hier ja weiter 😜
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
Hallo Kalleberlin,
er sucht ja eine FTP-Server-Klasse. Für einen FTP-Client könnte man ohnehin die FtpWebRequest-Klasse aus System.Net nehmen.
herbivore
Upps, direkt überlesen X(.
Sorry
Hallo Leute,
danke für eure Antworten.
ich versuche nun den FTP-Server http://www.c-sharpcorner.com/internet/FTPServerinCSharp.asp
auf C# 2005 zu portieren.
Im aktiv-Modus läuft alles wuderbar! Im passiv-Modus bleibt der FTP-Client beim LIST Befehl stehen.
Kann bitte einer drüberschauen und ausprobieren? als Client habe ich Filezilla verwendet.
Vielen Dank im Voraus
Hallo steffen_dec,
Kann bitte einer drüberschauen und ausprobieren? als Client habe ich Filezilla verwendet.
nö, siehe [Hinweis] Wie poste ich richtig? Punkt 4. Du kannst aber natürlich konkrete Fragen stellen.
herbivore
Hallo,
es liegt wohl an der Verarbeitung des Befehls PASV! Danach steigt jeder FTP-Client aus.
Ich habe mal die Pakete abgefangen und miteinander verglichen (mit denen von Filezilla FTP-Server) und habe folgendes festgestellt:
Wenn ich Filezilla-Server verwende dann ist das Paket so aufgebaut:
File Transfer Protocol (FTP)
227 Entering Passive Mode (192,168,100,13,9,248)\r\n
Response code: Entering Passive Mode (227)
Response arg: Entering Passive Mode (192,168,100,13,9,248)
Passive IP address: 192.168.100.13 (192.168.100.13)
Passive port: 2552
Das Paket wo von meinem Programm versendet wird sieht so aus:
File Transfer Protocol (FTP)
227 Entering Passive Mode (192,168,100,32,4,76)\r\n
Response code: Entering Passive Mode (227)
Response arg: Entering Passive Mode (192,168,100,32,4,76)
Passive IP address: 192.168.100.32 (192.168.100.32)
Passive port: 1100
Passive IP NAT: True
Wie ihr seht ist da das Passive IP NAT auf TRUE gesetzt. Liegt es vielleicht daran? Wenn ja, wie kann ich es auf false setzen?
Vielen Dank im Voraus.
Steffen
Hallo steffen_dec,
ich denke mal NAT heißt hier Network Address Translation. Kommt vermutlich daher, dass du mit nicht-öffentlichen IP-Adressen arbeitest. Wie man das bei dem konkreten FTP-Server beeinflussen kann, weiß ich jedoch nicht.
herbivore
Hallo ich glaube dass es an der funktion liegt?
hier die originale:
//Passive Mode Data Transfer Listner.
private Socket PassiveClientSocket(ref TCPListener clientDataListner,int intPort)
{
Thread oThread=Thread.CurrentThread;
lock(oThread)
{
try
{
if(clientDataListner.LocalEndpoint==null)
{
bool done=false;
Socket s=null;
try
{
s= clientDataListner.Accept();
done=true;
}
catch(Exception e)
{
}
return s;
}
else
{
Socket s= clientDataListner.Accept();
return s;
}
}
catch(Exception e)
{
Console.ClientConnect(ClientID,e.StackTrace);
}
return null;
}
}
und hier wie ich sie portiert habe:
private Socket PassiveClientSocket(ref TcpListener clientDataListner,int intPort)
{
Thread oThread=Thread.CurrentThread;
lock(oThread)
{
try
{
//if(clientDataListner.LocalEndpoint==null)
if (((IPEndPoint)clientDataListner.LocalEndpoint).Address.ToString() == "0.0.0.0")
{
Socket s=null;
try
{
//s = clientDataListner.Accept();
s = clientDataListner.AcceptSocket();
}
catch(Exception)
{
}
return s;
}
else
{
//Socket s = clientDataListner.Accept();
Socket s = clientDataListner.AcceptSocket();
return s;
}
}
catch(Exception e)
{
Console.ClientConnect(ClientID,e.StackTrace);
}
return null;
}
}
habe ich da was missverstanden?
MFG
Steffen
ich habe nun andere samples für C# die auch mit 2005 funktionieren gefunden:
[URL]http://www.gotdotnet.com/community/usersamples/Default.aspx?query=ftp&Sites=([URL]www.GotDotNet.com)[/URL]