indy 远程桌面UDP数据流问题,来者有分!!
不知道如下代码有什么问题
接收不到远程桌面
服务端
///////////////////////////////////////
procedure TForm1.Button2Click(Sender: TObject);
var
sendsize:longint;
Buf:array[0..BufSize-1] of char;
begin
if JpegStream.Size = 0 then
snapscreen;
if LeftSize > BufSize then
SendSize := BufSize
else
SendSize := LeftSize;
//将jpegStream内存流读取SendSize大小的数据到缓冲区
jpegStream.ReadBuffer(Buf,sendSize);
LeftSize:=LeftSize-SendSize;
//向客户端发送
try
idudpclient1.SendBuffer(buf,sendsize);
Memo1.Lines.Add(Buf);//测试,这里有数据传输
sleep(10);
except
jpegstream.Clear;
end;
if LeftSize=0 then
jpegStream.Clear;
end;
procedure Tform1.snapScreen();
var
bmpscreen:Tbitmap;
jpegscreen:Tjpegimage;
FullscreenCanvas:TCanvas;
dc:HDC;
sourceRect,destRect:TRect;
begin
//得到屏幕设备
dc:=getdc(0);
//创建画布句柄
fullscreencanvas:=Tcanvas.Create;
fullscreencanvas.Handle:=dc;
//创建存储位图对象
bmpscreen:=Tbitmap.create;
bmpscreen.Width:=screen.Width;
bmpscreen.Height:=screen.Height;
sourcerect:=rect(0,0,screen.Width,screen.Height);
destrect:=rect(0,0,screen.Width,screen.Height);
//将屏幕图象抓取到bmpScreen位图中
bmpscreen.Canvas.CopyRect(sourcerect,fullscreenCanvas,destrect);
//创建储存Jpeg格式的对象
jpegscreen:=Tjpegimage.Create;
//将图象压缩成Jpeg格式,保存到JpegStream内存流中。
jpegscreen.Assign(bmpscreen);
jpegscreen.CompressionQuality:=10;
jpegscreen.SaveToStream(jpegStream);
jpegstream.Position:=0;
LeftSize:=jpegStream.Size;
//释放创建的对象
FullscreenCanvas.Free;
bmpscreen.Free;
jpegscreen.Free;
ReleaseDC(0,DC);
end;
//以上是发送的代码,下面是接收的代码,但是总是接收不到
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
datastringstream:TStringStream;
begin
datastringstream:=TStringStream.Create('');
datastringstream.CopyFrom(AData,AData.Size);
Image1.Picture.Bitmap.LoadFromStream(datastringstream);
Image1.Free;
end;
这里并不能获得远程桌面的截图,请问如何能获取到呢?谢谢各位了。来者有分
别告诉我用TCP,我现在只想知道UDP的,谢谢各位了