Ich schaue mir auf dem Client die Größe des MemoryStreams an, die gesendet wird. Anschließend zähle ich auf dem Server die empfangenen Bytes zusammen. Der Client zeigt mir eine Größe von bspw. 43943 und der Server eine Größe von 43947 Bytes an. Irgendwie kommt da ein bisschen zu viel an.
Gesendet wird mit...
Delphi-Quellcode:
procedure TForm1.Senden_BClick(Sender: TObject);
var
ms: TMemoryStream;
jpg: TJpegImage;
siz: Integer;
begin
ms := TMemoryStream.Create;
jpg := TJpegImage.Create;
jpg.Assign(Image1.Picture);
jpg.SaveToStream(ms);
ms.Position := 0;
siz := ms.Size;
Memo1.Text := 'Sent: ' + IntToStr(siz);
Client.Socket.SendBuf(siz, SizeOf(siz));
// Das Windows-Socket-Objekt gibt den Stream nach erfolgter Verarbeitung frei.
// Versuchen Sie nicht, den Stream, nachdem er als Parameter übergeben wurde, freizugeben.
Client.Socket.SendStream(ms);
// ms.Free;
jpg.Free;
end;