Einzelnen Beitrag anzeigen

changlee
(Gast)

n/a Beiträge
 
#1

Indy TCP Server empfängt zwar, aber Stream kommt nicht an

  Alt 21. Aug 2008, 20:12
Hallo,

ich habe gemäß diesem Thread einen MemoryStream an einen IdTCPServer versendet.
Im TCPServer.Onexcecute wird zwar ein Stream empfangen (SizeOfIncomingStream >0, siehe erstes "showmessage").
Der Stream wird aber nicht korrekt in meinen Memorystream "MStream" übertragen (zweites showmessage).

Woran kann den das liegen? Ist doch alles so wie im Beispiel (außer connect und disconnect. Das wird bei mir an anderer Stelle gemacht).

Hier kommt der Quelcode:
Delphi-Quellcode:
procedure TForm1.TCPServerExecute(AContext: TIdContext);
var
  MStream: TMemoryStream;
  SizeOfIncomingStream: Integer;
  IDS: TidStreamVCL;
begin
  AContext.Connection.IOHandler.WriteLn(LEdtOwnerName.Text);
  MStream := TMemoryStream.create;
  IDS := TidStreamVCL.Create(MStream);
  try
    // Empfangen:
    with AContext.connection do begin
      try
        SizeOfIncomingStream := Socket.ReadInteger;
        Showmessage(inttostr(SizeOfIncomingStream));
        Socket.ReadStream(IDS, SizeOfIncomingStream);
      finally
       // Disconnect;
      end;
    end;
   // Damit der Inhalt von IDS in FStream übertragen wird:
   IDS.VCLStream.Position := 0;
   finally
     FreeAndNil(IDS);
     MStream.Free;
   end;
  //jetzt kannste irgendetwas mit dem Stream machen, z.B. wieder in ein bitmap laden:
  Image1.Picture.Bitmap.LoadFromStream(MStream);
  Showmessage(inttostr(MStream.Size));
end;
Sieht jemand den Fehler?

Viele Grüße
Stefan.
  Mit Zitat antworten Zitat