Problem mit FTP-Verbindung

Xo-mate

Erfahrenes Mitglied
Hallo
Ich habe ein kleines Problem mit meinem Programm.
Es läd sich zuerst eine Datei via http aus dem Netz in dem die Verbindungsdaten für den FTP-Zugang stehen. Funktioniert auch alles soweit.
Nun soll mein Programm ersteinmal per FTP auf den Zielserver connecten.
Das Login an sich funktioniert auch prima.
Dann soll der Pfad auf dem Server gewechselt werden. Klappt auch noch.
Beim Download dann kommt folgende Fehlermeldung:

System.IndexOutOfRangeException: Der Index war außerhalb des Arraybereichs.
at NetSendSharpClientGUI.FTPFactory.readLine() in c:\dokumente und einstellungen\kriss\eigene dateien\visual studio projects\cs1.6rs\cs1.6rs\ftp.cs:line 633
at NetSendSharpClientGUI.FTPFactory.readLine() in c:\dokumente und einstellungen\kriss\eigene dateien\visual studio projects\cs1.6rs\cs1.6rs\ftp.cs:line 644
at NetSendSharpClientGUI.FTPFactory.readLine() in c:\dokumente und einstellungen\kriss\eigene dateien\visual studio projects\cs1.6rs\cs1.6rs\ftp.cs:line 644
at NetSendSharpClientGUI.FTPFactory.readLine() in c:\dokumente und einstellungen\kriss\eigene dateien\visual studio projects\cs1.6rs\cs1.6rs\ftp.cs:line 644
at NetSendSharpClientGUI.FTPFactory.readLine() in c:\dokumente und einstellungen\kriss\eigene dateien\visual studio projects\cs1.6rs\cs1.6rs\ftp.cs:line 644
at NetSendSharpClientGUI.FTPFactory.readReply() in c:\dokumente und einstellungen\kriss\eigene dateien\visual studio projects\cs1.6rs\cs1.6rs\ftp.cs:line 603
at NetSendSharpClientGUI.FTPFactory.login() in c:\dokumente und einstellungen\kriss\eigene dateien\visual studio projects\cs1.6rs\cs1.6rs\ftp.cs:line 227
at CS1._6RS.Form1.downloadFiles() in c:\dokumente und einstellungen\kriss\eigene dateien\visual studio projects\cs1.6rs\cs1.6rs\form1.cs:line 553

Der Code, der betroffen ist sieht wie folgt aus:
Code:
private string readLine()
		{
			while (true)
			{
				bytes = clientSocket.Receive(buffer, buffer.Length, 0);
				mes += ASCII.GetString(buffer, 0, bytes);
				if (bytes < buffer.Length)
				{
					break;
				}
			}

			string[] mess = mes.Split('\n');

			if (mes.Length > 2)
			{
				mes = mess[mess.Length - 2];//<- erster fehler
			}
			else
			{
				mes = mess[0];
			}

			if (mes.Length >= 4)
			{
				if (!mes.Substring(3, 1).Equals(" "))
				{
					return readLine(); // weitere Fehler
				}
			}

			if (debug)
			{
				for (int k = 0; k < mess.Length - 1; k++)
				{
					Console.WriteLine(mess[k]);
				}
			}

			return mes;
		}

Ich hoffe ihr könnt mir mit den Infos helfen. Wenn ihr noch mehr infos braucht, dann sagt bescheid.
 

Nico Graichen

Erfahrenes Mitglied
Hi,
also dieser OutOfRange-Error könnte daran liegen, dass du auf einen Indexbereich von "mess" zugreifst, den es nicht gibt. Du überprüfst zwar die Länge von "mes", jedoch scheint deine Indexberechnung danach eine Zahl kleiner 0 zu ergeben. Hast du dir schon mal angeschaut, wieviele Felder in "mess" gefüllt sind. Wenn es kleiner gleich eins ist, ist die Angelegenheit klar. du würdest versuchen an der Stelle -1 auf "mess" zuzugreifen, und das gibt es nicht.