我用的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;
客户端:
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;
解决方案 »
- delphi开发多国语言问题
- 纯粹郁闷散分
- 如何分析一个jpeg文件由文件编码得到这个文件的长度。
- 一个问题困扰我很久,请各位大侠指点~~
- 算法问题,请帮忙!!!!!!!!!
- 客户端从服务器(远程数据库)下载数据,然后依XML格式打开和保存数据
- 关于dbgrid控件显示文字不正确的小问题,请大家指点!
- 调查:写Delphi游戏开发程序手记,会去阅读的人有多少~
- 怪问题,我用DBgrid作为输入界面,输入几条记录后,突然其中的几条记录自动被重复一次,后台数据库表中看输入的记录又是正常的?为什么?
- LoginDialog('a', 'b', 'c')为什么通不过?
- delphi +sql server 是不是比 +mysql 有很多优势?ms 是大哥?!
- 怎样在SQL2000数据库中存入图像(.bmp ,.jpg)?急!!!!
客户端:
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;
jpeg;procedure TForm1.Button1Click(Sender: TObject);
var
dc:hdc;
bmp:tbitmap;
jpg:tjpegimage;
stream:tmemorystream;
begin
i:=gettickcount;
dc:=getdc(0);
bmp:=tbitmap.Create;
bmp.width:=screen.Width; bmp.height:=screen.height;
bitblt(bmp.canvas.handle,0,0,bmp.width,bmp.height,dc,0,0,srccopy);
releasedc(0,dc);
stream:=tmemorystream.Create;
jpg:=tjpegimage.Create;
jpg.grayscale:=true;
jpg.Assign(bmp);
jpg.SaveToStream(stream);
nmstrm1.PostIt(stream);
jpg.free;
stream.free;
bmp.free;
end;procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
strm: TStream);
var
jpg:tjpegimage;
begin
jpg:=tjpegimage.Create;
jpg.LoadFromStream(strm);
image1.Picture.Bitmap.assign(jpg);
showmessage(inttostr(gettickcount-i));
end;