Einzelnen Beitrag anzeigen

changlee
(Gast)

n/a Beiträge
 
#4

Re: Indy TCP Server empfängt zwar, aber Stream kommt nicht a

  Alt 21. Aug 2008, 20:35
Oh, ja. MStream.Free war natürlich an der falschen Stelle. Das hat das Problem allerdings nicht gelöst. Der Quelltext sieht jetzt so aus:

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('size'+inttostr(SizeOfIncomingStream));
        Socket.ReadStream(IDS, SizeOfIncomingStream);
        Showmessage('test0');
      finally
       // Disconnect;
      end;
    end;
   // Damit der Inhalt von IDS in FStream übertragen wird:
   IDS.VCLStream.Position := 0;
   Showmessage('test1');
   finally
     FreeAndNil(IDS);
   end;
  //jetzt kannste irgendetwas mit dem Stream machen, z.B. wieder in ein bitmap laden:
  ContactScreenForm.Image1.Picture.Bitmap.LoadFromStream(MStream);
  Showmessage('test2');
  Showmessage('size:'+inttostr(MStream.Size));
  mStream.Free;
end;
Die ausgaben lauten:
"size62009"
"test0"
Danach kommen keine messages mehr.
Ich kann mir das nicht erklären.

Dass der Stream nicht in einem Stück ankommt glaube ich eigentlich nicht, da mir ja in der ersten Messagebox eine Größe angezeigt wird. Und dann muss es irgendwo einen Fehler geben, sonst würde ich doch die Größe von MStream angezeugt bekommen...
  Mit Zitat antworten Zitat