Hi,
ich weiss, es gibt viele posts über screenshot, doch das hilft mir nix:p Und zwar hab ich 2 TClientSOcket (beim client) laufen.. und 2 TServerSocket (beim server) laufen. das erste "paar" ist für die normale verständigung.. das 2. für die datenübertragung.. Der Client schickt den request, der server macht nen screenshot und soll ihn dann zum client senden.
CLIENT
Client (Get Screenshot Button)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TMainForm.GetScreenshotClick(Sender: TObject); begin if (Client.Active = true) then begin Client.Socket.Sendtext('Screenshot«');
end; end; |
Client (Recieve Screenshot)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TMainForm.StreamSocketRead(Sender: TObject; Socket: TCustomWinSocket); var FStream: TFileStream; SizeOfFile: Integer; pBuffer: Pointer; begin FStream := TFileStream.Create('C:\stream.bmp', fmCreate or fmOpenWrite); SizeOfFile := Socket.ReceiveLength; GetMem(pBuffer, SizeOfFile); try Socket.ReceiveBuf(pBuffer^, SizeOfFile); FStream.Write(pBuffer^, SizeOfFile); finally FreeMem(pBuffer); FStream.Free; end; if (FileExists('C:\stream.bmp')) then begin end; |
SERVER
Server (Request Read):
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| procedure TMainForm.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket); var rec:string; var inhalt:array [0..99] of string; var i:longint;
var B : TBitmap;
var FStream: TFileStream;
begin rec := socket.ReceiveText ; i:=1; while (Length(rec) >= 1) do begin inhalt[i] := copy(rec,1,AnsiPos('«',rec)-1); delete(rec,1,length(inhalt[i])+1); i := i + 1; end;
if (inhalt[1] = 'Screenshot') then begin B := TBitmap.Create; GetScreenShot(B); Screenshotimage.Picture.Create.Assign(B); Screenshotimage.Picture.SaveToFile('C:\test.bmp');
FStream := TFileStream.Create('C:\test.bmp', fmOpenRead); Screenstream.Socket.Connections[0].SendStream(FStream); Deletefile('C:\test.bmp');
end; end; |
Server:
Server = TServerSocket Port 992
Screenstream = TServerSocket Port 993
Client:
Client = TServerClient Port 992
StreamSocket = TServerClient Port 993
PROBLEM:
Er sendet nur 7KB von der datei (bmp ca 2mb oder so). und wenn ich es als JPG konvertiere dann hat es eine SEHR schlechte qualität.. total verschiedene farben.. deshalb ist es auch in { } eingerahmt..
thx im vorraus.. ich hoffe alles is klar und deutlich beschrieben.
Achja sollte ich jetzt irgendwelche grammatikalischen fehler gemacht haben, liegt das daran, dass ich seit ca 43 stunden wach bin:)
in diesem sinne.. guads nächtle
Moderiert von
Tino: Delphi-Tags hinzugefügt.