Ich habe das jetzt einfach mal umgedreht, sodass der Client einen Stream an den Server schickt. Ich denke noch nach wie vor, dass das so nicht gehen wird, aber ich habe es einfach mal versucht.
Das sieht jetzt so aus.
Der Server:
Delphi-Quellcode:
procedure TfrmServer.ServerExecute(AThread: TIdPeerThread);
var
Path: String;
fStream: TFileStream;
tBM: tBitmap;
begin
Try
If AThread.Connection.ReadLn = 'SSS' then
begin
ShowMessage('Wird ausgeführt ...');
Path := ExtractFileDir(ParamStr(0)) + 'screen2.bmp';
If FileExists(Path) then DeleteFile(Path);
fStream := TFileStream.Create(Path, fmCreate);
AThread.Connection.ReadStream(fStream, -1, True);
FreeAndNil(fStream);
Image1.Picture.LoadFromFile(Path);
end;
Except
end;
end;
Der Client:
Delphi-Quellcode:
procedure TfrmClient.btnServerScreenShotClick(Sender: TObject);
var
fStream: TFileStream;
Path: String;
begin
Try
With Client do
begin
WriteLn('SSS');
Path := ExtractFileDir(ParamStr(0)) + '\screen.bmp';
fStream := TFileStream.Create(Path, fmOpenRead + fmShareDenyNone);
OpenWriteBuffer;
WriteStream(fStream);
CloseWriteBuffer;
FreeAndNil(fStream);
end;
Except
end;
end;
Ich erhalte die ShowMessage 'Wird ausgeführt ...', sprich die Verbindung zwischen Client und Server steht. Die Datei vom Clienten (screen.bmp) existiert, doch er überträgt nichts. Es kommt kein Stream an, somit wird auch keine Datei screen2.bmp erstellt und Image1 bleibt leer.
Habe ich nur irgendetwas falsch gemacht, oder kann ich wirklich nicht Server und Client tauschen?