我用的TNMUDP,
客户端:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var CCode:array[0..3]of char; TmpStream : TMemoryStream;
SendSize : integer;
begin
NMUDP1.ReadBuffer(CCode,NumberBytes);
if CCode[0]='s' then
begin
TmpStream:=TMemoryStream.Create;
try
if BmpStream.Size=0 then
begin
BmpStream.Clear;
ScreenCap;
end;
if LeftSize>BufSize then SendSize:=BufSize else SendSize:=LeftSize;
//BmpStream.ReadBuffer(TmpStream,SendSize);
TmpStream.CopyFrom(BmpStream,SendSize);
LeftSize:=LeftSize-SendSize;
if LeftSize=0 then BmpStream.Clear;
NMUDP1.RemoteHost:=FromIP;
NMUDP1.SendStream(TmpStream);
finally
TmpStream.Free;
end;
end;
end;
服务器:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var ReqCode : array[0..3] of char; Bit:TBitmap;
jpe: TJPEGImage;
begin
ReqCode:='show';
NMUDP1.ReadStream(TmpStream);
RsltStream.CopyFrom(Tmpstream,NumberBytes);
if NumberBytes<BufSize then
begin
RsltStream.Position:=0;
if flag='form1' then
begin
jpe:=TJPEGImage.Create;
Bit:=TBitmap.Create;
try
jpe.LoadFromStream(RsltStream);
Bit.Assign(jpe);
//Image1.Picture.Bitmap.LoadFromStream(RsltStream);
Image1.Picture.Bitmap:=Bit;
finally
jpe.Free;
Bit.Free;
end;
end else
if flag='form2' then
begin
jpe:=TJPEGImage.create;
Bit:=TBitmap.Create;
try
jpe.LoadFromStream(RsltStream);
Bit.Assign(jpe);
StretchBlt(form2.Canvas.Handle,0,0,screen.Width,screen.Height,
Bit.Canvas.Handle,0,0,600,450,srccopy);
form2.Show;
finally
Bit.Free;
jpe.free;
end;
end;
TmpStream.Clear;
RsltStream.Clear;
end else
begin
TmpStream.Clear;
NMUDP1.RemoteHost:=edit1.Text;
NMUDP1.SendBuffer(ReqCode,4);
end;
end;
我用的TNMUDP,
客户端:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var CCode:array[0..3]of char; TmpStream : TMemoryStream;
SendSize : integer;
begin
NMUDP1.ReadBuffer(CCode,NumberBytes);
if CCode[0]='s' then
begin
TmpStream:=TMemoryStream.Create;
try
if BmpStream.Size=0 then
begin
BmpStream.Clear;
ScreenCap;
end;
if LeftSize>BufSize then SendSize:=BufSize else SendSize:=LeftSize;
//BmpStream.ReadBuffer(TmpStream,SendSize);
TmpStream.CopyFrom(BmpStream,SendSize);
LeftSize:=LeftSize-SendSize;
if LeftSize=0 then BmpStream.Clear;
NMUDP1.RemoteHost:=FromIP;
NMUDP1.SendStream(TmpStream);
finally
TmpStream.Free;
end;
end;
end;
服务器:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var ReqCode : array[0..3] of char; Bit:TBitmap;
jpe: TJPEGImage;
begin
ReqCode:='show';
NMUDP1.ReadStream(TmpStream);
RsltStream.CopyFrom(Tmpstream,NumberBytes);
if NumberBytes<BufSize then
begin
RsltStream.Position:=0;
if flag='form1' then
begin
jpe:=TJPEGImage.Create;
Bit:=TBitmap.Create;
try
jpe.LoadFromStream(RsltStream);
Bit.Assign(jpe);
//Image1.Picture.Bitmap.LoadFromStream(RsltStream);
Image1.Picture.Bitmap:=Bit;
finally
jpe.Free;
Bit.Free;
end;
end else
if flag='form2' then
begin
jpe:=TJPEGImage.create;
Bit:=TBitmap.Create;
try
jpe.LoadFromStream(RsltStream);
Bit.Assign(jpe);
StretchBlt(form2.Canvas.Handle,0,0,screen.Width,screen.Height,
Bit.Canvas.Handle,0,0,600,450,srccopy);
form2.Show;
finally
Bit.Free;
jpe.free;
end;
end;
TmpStream.Clear;
RsltStream.Clear;
end else
begin
TmpStream.Clear;
NMUDP1.RemoteHost:=edit1.Text;
NMUDP1.SendBuffer(ReqCode,4);
end;
end;