Dateiübertragung



  • Ich schreibe gerade an nem Chatprogramm und jetz hänge ich an folgendem:

    Ich weiß nicht wie ich ne Dateiübertragung anstellen soll.
    Wenn ich streams verschicken will kommt am Pc irgendwie nur Datenschrott an.
    Ich weiß ned wie ich das Anstellen sollte.
    Für kleinere Dateien ( Dateien bis 150Kb hab ich da ne relativ schnelle ersatzlösung gefunden) aber für größere dateien hab ich da leider keine idee wie ich das anstellen sollte.



  • Streams sollten eigentlich schon funktionieren.
    In den Examples-Ordner ist ein Beispiel für FastNet und eins für Indy.

    Poste am besten relevanten Code für Dein 'Datenschrottproblem'.

    Gruss



  • Also ich poste mal den relevanten Teil

    OpenDialog1->Filter="Alle Dateien(*.*)|*.*";OpenDialog1->FileName="";
     if(OpenDialog1->Execute())fn=OpenDialog1->FileName;
     if(FileExists(fn))
     {TFileStream *File = new TFileStream(fn,fmOpenReadWrite);
      size=File->Size;
      Array=new  Byte[size];
      File->Read(Array,size);
      ClientSocket1->Socket->SendStream(File);
    
      delete File;
    


  • Kann jetzt auf die Schnelle keinen Fehler entdecken. Der Server wird ja richtig eingestellt sein?
    mit FastNet würde das ganze so aussehen:

    if (OpenPictureDialog1->Execute())
      {
        TFileStream *MyFStream;
        MyFStream = new TFileStream(OpenPictureDialog1->FileName, fmOpenRead);
        try
        {
          NMStrm1->Host = Edit2->Text;
          NMStrm1->FromName = Edit1->Text;
          NMStrm1->PostIt(MyFStream);
        }
        catch(...)
        {
        }
        MyFStream->Free();
      }
    

    und zum empfangen:

    TFileStream *MyFStream;
      MyFStream = new TFileStream(".\\tmp.bmp", fmCreate);
      try
      {
        MyFStream->CopyFrom(strm, strm->Size);
      }
      catch(...)
      {
      }
      MyFStream->Free()
    


  • Und wie schnell sollte das ganze dann sein so wie du es da erklärst?

    So bei einem 100Mbit lan

    Denn es geht hier um dateiübertragung in größen von bis zu 600 Mb.


Anmelden zum Antworten