Hallo Leute,
ich möchte Bilder von einen Client zu den Server senden.
Obwohl ich schon viel probiert habe, ist mein Stream immer zerstört :/ Nun weiß ich aber nicht, wieso.
Server (Lazarus):
Delphi-Quellcode:
procedure TFormMain.TCPServerExecute(AContext: TIdContext);
var size: Int64;
ms: TMemoryStream;
ClientPos: string;
begin
ms:=TMemoryStream.Create;
try
ClientPos:='0';
//ClientPos:=AContext.Connection.IOHandler.ReadLn;
Status(ClientPos);
size:=StrToInt64(AContext.Connection.IOHandler.ReadLn);
AContext.Connection.IOHandler.ReadStream(ms,size,false);
finally
Status('Recived Picture from '+AContext.Connection.Socket.Binding.IP);
//img1.Picture.LoadFromStream(ms);
if FileExists('C:\Result.bmp') then DeleteFile('C:\Result.bmp');
ms.SaveToFile('C:\Result.bmp');
ms.Free;
AContext.Connection.Disconnect;
end;
end;
Client (Delphi 2009 Professional):
Delphi-Quellcode:
procedure TFormMain.tmrNetworkTimer(Sender: TObject);
var ms: TMemoryStream;
begin
if (NetworkRender=true) and (not TCPClient.Connected) then
begin
ms:=TMemoryStream.Create;
try
TCPClient.Host:=NetworkHost;
TCPClient.Port:=NetworkPort;
TCPClient.Connect;
//Senden
//TCPClient.IOHandler.WriteLn(IntToStr(split));
Bitmap.SaveToStream(ms);
ms:=TMemoryStream.Create; //<------------ Ups, außerdem muss die Anwendung als Administrator ausgeführt werden, da direkt auf C geschrieben wird.
ms.Position:=0;
TCPClient.IOHandler.Writeln(IntToStr(ms.Size));
TCPClient.IOHandler.Write(ms);
finally
ms.Free;
TCPClient.Disconnect;
end;
end;
end;