Ftp Client



  • Moin .. 🙂

    Zuerst:
    Ich schreibe das hier mal in spezielle programmierung weil ich mit dem .net framework arbeite und auch viel gebrauch davon gemacht habe.
    Ich bin gerade dabei einen kleinen Ftp client zu programmieren. Vieles funktioniert auch schon, wie zum beispiel connecten, einloggen, ordner wechseln uvw. .
    Nur das Runterladen von Dateien macht mir Probleme: Nachdem ich die daten angefordert habe und ich sie dann an den passiven client (wenn ich das so nennen darf) gesendet werden schreibe ich sie direkt mit einem BinaryWriter in eine Datei. Am ende stimmt dann zwar die Dateigröße aber die datei "funktionier" nicht. Wenn man sich die datei mit einem texteditor anschaut sieht man auch, dass sie eine andere zeilenanzahl hat als die ursprungsdatei.
    Hier der code zum empfangen:
    Code:

    bool FtpClient::RetrieveData(String *OutFile)
    {
    	FileStream *fs = new FileStream(OutFile, FileMode::Create);
    	BinaryWriter *bw = new BinaryWriter(fs);
    	NetworkStream *ns = pmClient->GetStream();
    
    	unsigned char buffer __gc[] = new unsigned char __gc[pmClient->ReceiveBufferSize];
    	int iLength;
    	int TimeOutTime;
    
    	while(true)
    	{
    		if(ns->DataAvailable)
    		{
    			iLength = ns->Read(buffer, 0, pmClient->ReceiveBufferSize);
    			bw->Write(buffer, 0, iLength);
    			TimeOutTime = 0;
    		}
    		else
    		{
    			TimeOutTime++;
    		}
    
    		if(TimeOutTime == TimeOut)
    		{	
    			bw->Flush();
    			bw->Close();
    			fs->Close();
    			Console::WriteLine("Server Timeout");
    			return false;
    		}
    
    		if(GetMessage()->IndexOf("226") == 0)
    		{
    			Console::WriteLine("Datatransfer finished");
    			break;
    		}
    		Thread::Sleep(1);
    	}
    
    	bw->Flush();
    	bw->Close();
    	fs->Close();
    	return true;
    }
    

    wär nett würde mit jemand helfen

    cya

    braindead


Anmelden zum Antworten