Stream Versenden



  • Wenn ich versuche so einen Stream zu versenden, sollte es dann funktionieren?
    Denn ich kenne mich noch überhaupt nicht mit Streams aus!

    Nur welche Ereigniss Methode meines Server/Socket reagiert dann darauf?

    TMemoryStream *st = new TMemoryStream;
    
      st->LoadFromFile("c:\\test.exe");
      Client->Socket->SendBuf(st->Memory, st->Size);
    
      delete st;
    


  • Wo könnte man wohl die eingehenden Daten auslesen?

    Du solltest dir vielleicht mal das Chat-Beispiel im /examples-Verzeichnis des BCB ansehen, um dich mit den Client/ServerSocket-Grundlagen vertraut zu machen.



  • Ausserdem wäre die Suchfunktion mit den Stichwörtern "stream" und "socket" (jeweils ohne Anführungszeichen) ganz spannend, sie liefert 10 nette Artikel zu dem Thema.

    -junix



  • Beides schon gemacht nur Ergebniss war VOID;
    Habe bereits schon aus dem Chat example gelernt, dass es wohl reicht wenn man
    Server auf true und den Client ebenfals (Active) setzt.
    Zumindest beim Senden von Texten gehe mal davon aus bei Streams ist das nicht viel anders oder??

    Hab jetzt mal so ein minimal Prog entworfen.

    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
      Server->Active = true;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      Client->Address = "127.0.0.1";
      Client->Active = true;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Exit(TObject *Sender)
    {
      Client->Close();
      Server->Close();
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
      TMemoryStream *d = new TMemoryStream;
    
      d->LoadFromFile("c:\\test.exe");
    
      Server->Socket->SendStream( d );
      // Server->Socket->SendBuf( d, d->Size );
    
      delete d;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ClientRead(TObject *Sender,
          TCustomWinSocket *Socket)
    {
      ShowMessage("");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ServerClientRead(TObject *Sender,
          TCustomWinSocket *Socket)
    {
      ShowMessage("");
    }
    

    Also Fehler gibt es keine... nur wird weder das ClientRead vom Server noch onRead des Server angesprochen. Also so wie ich das verstanden habe sollte der Server den Stream Senden und der Client mit onRead empfangen. Kommt aber nichts.
    P.S. Port ist bei beiden 100.


Anmelden zum Antworten