Laden...

Suche FTP-Server Klasse

Erstellt von steffen_dec vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.599 Views
S
steffen_dec Themenstarter:in
322 Beiträge seit 2007
vor 16 Jahren
Suche FTP-Server Klasse

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

K
165 Beiträge seit 2007
vor 16 Jahren

Hallo steffen_doc,

vielleicht hilft Die das hier ja weiter 😜

If u want to finish first, u have to finish first.
5.941 Beiträge seit 2005
vor 16 Jahren

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

49.485 Beiträge seit 2005
vor 16 Jahren

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

K
165 Beiträge seit 2007
vor 16 Jahren

Upps, direkt überlesen X(.

Sorry

If u want to finish first, u have to finish first.
S
steffen_dec Themenstarter:in
322 Beiträge seit 2007
vor 16 Jahren

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

49.485 Beiträge seit 2005
vor 16 Jahren

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

S
steffen_dec Themenstarter:in
322 Beiträge seit 2007
vor 16 Jahren

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

49.485 Beiträge seit 2005
vor 16 Jahren

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

S
steffen_dec Themenstarter:in
322 Beiträge seit 2007
vor 16 Jahren

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

S
steffen_dec Themenstarter:in
322 Beiträge seit 2007
vor 16 Jahren

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]