indy tcpclient发送和接收截取屏幕
下面的代码是实现从客户端发送一个命令给服务端,
服务端接收到命令后截取屏幕并发送给客户端,客户端接收保存显示 客户端: var ftmpStream : TFileStream; bitmap:Tbitmap; begin try with IdTCPClient do begin if connected then DisConnect; Host := edtServerHost.text; Port := StrToInt(edtServerPort.text); Connect; WriteLn('SRN'); // delete if exists // in production situation you might store binary downloads like this in a cache folder if FileExists(ExtractFileDir(ParamStr(0)) + '\ServerScreen.bmp') then DeleteFile(ExtractFileDir(ParamStr(0)) + '\ServerScreen.bmp'); ftmpStream := TFileStream.Create(ExtractFileDir(ParamStr(0)) + '\ServerScreen.bmp',fmCreate); // bmpstream.Clear; // bitmap:=Tbitmap.Create; while connected do // ReadStream(bmpStream,-1,true); ReadStream(fTmpStream,-1,true); FreeAndNil(fTmpStream); Disconnect; imgMain.Picture.LoadFromFile(ExtractFileDir(ParamStr(0)) + '\ServerScreen.bmp'); // bitmap.LoadFromStream(bmpStream); // imgMain.Picture.Bitmap:=bitmap; end; except on E : Exception do ShowMessage(E.Message); end; 服务端: AThread.Connection.Disconnect; |