发一个给你吧: //客户端: //使用timer不断的发送图片内容interval设置为3000 procedure TForm1.Timer1Timer(Sender: TObject); var Buf:array[0..BufSize-1] of char; sendsize : Integer; begin //使用jpegStream1.Size来控制截取屏幕snapscreen, if jpegStream1.Size=0 then snapscreen; While LeftSize >0 do begin if LeftSize > BufSize Then sendsize:=BufSize else sendsize:=LeftSize; jpegStream1.ReadBuffer(buf,sendsize); LeftSize := LeftSize - sendsize; if LeftSize <= 0 then jpegStream1.Clear; //客户端的图片发送,一帧一帧的发送,一帧的大小由 BufSize控制 self.IdUDPClient1.SendBuffer(buf,sendsize); end; end;//服务器端: procedure Tcontrolform.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); begin if AData.Size > 0 then begin RsltStream.CopyFrom(AData,AData.Size); if AData.Size < bufSize then begin RsltStream.Position:=0; // j:=TJpegImage.Create; j.LoadFromStream(RsltStream); // Image1.Picture.Bitmap.LoadFromStream(RsltStream); image1.Picture.Assign(j); // j.Free; RsltStream.Clear; end; end; end;
to liangyong007a(梦里有云,心中有天地) 恩 是问过。但给的答案和结果有点差别。。解决了。项目暂时搁浅了。结贴了。
http://community.csdn.net/Expert/topic/3463/3463919.xml?temp=.517666
//客户端:
//使用timer不断的发送图片内容interval设置为3000
procedure TForm1.Timer1Timer(Sender: TObject);
var
Buf:array[0..BufSize-1] of char;
sendsize : Integer;
begin
//使用jpegStream1.Size来控制截取屏幕snapscreen,
if jpegStream1.Size=0 then snapscreen;
While LeftSize >0 do begin
if LeftSize > BufSize Then
sendsize:=BufSize
else
sendsize:=LeftSize;
jpegStream1.ReadBuffer(buf,sendsize);
LeftSize := LeftSize - sendsize;
if LeftSize <= 0 then jpegStream1.Clear;
//客户端的图片发送,一帧一帧的发送,一帧的大小由 BufSize控制
self.IdUDPClient1.SendBuffer(buf,sendsize);
end;
end;//服务器端:
procedure Tcontrolform.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
begin
if AData.Size > 0 then
begin
RsltStream.CopyFrom(AData,AData.Size);
if AData.Size < bufSize then
begin
RsltStream.Position:=0;
// j:=TJpegImage.Create;
j.LoadFromStream(RsltStream);
// Image1.Picture.Bitmap.LoadFromStream(RsltStream);
image1.Picture.Assign(j);
// j.Free;
RsltStream.Clear;
end;
end;
end;