---- 第二步,編制VServer.exe文件。新建Delphi工程,將窗體的Name屬性設為“Server”。加入TNMUDP控件,Name屬性設為“SUDP”;LocalPort屬性設為“2222”,讓控件SUDP監視主控機的2222端口,當有數據發送到該口時,觸發控件SUDP的OnDataReceived事件;RemotePort屬性設為“1111”,當控件SUDP發送數據時,將數據發到受控機的1111口。加入控件Image1,Align屬性設為“alClient”;加入控件Button1,Caption屬性設為“截屏”;加入控件Label1,Caption屬性設為“左:上:右:下”;加入控件Edit1,Text屬性設為“0:0:100:100”;加入控件Label2,Caption屬性設為“受控機IP地址”;加入控件Edit2,Text屬性設為“127.0.0.1”; 在implementation后面加入變量定義 const BufSize=2048; var RsltStream,TmpStream:TMemoryStream;
為Server的OnCreate事件添加代碼: procedure TServer.FormCreate(Sender: TObject); begin RsltStream:=TMemoryStream.Create; TmpStream:=TMemoryStream.Create; end;
為Client的OnDestroy事件添加代碼: procedure TServer.FormDestroy(Sender: TObject); begin RsltStream.Free; TmpStream.Free; end;
為控件Button1的OnClick事件添加代碼: procedure TServer.Button1Click(Sender: TObject); var ReqCode:array[0..29] of char;ReqCodeStr:string; begin ReqCodeStr:='show'+Edit1.Text; StrpCopy(ReqCode,ReqCodeStr); TmpStream.Clear; RsltStream.Clear; SUDP.RemoteHost:=Edit2.Text; SUDP.SendBuffer(ReqCode,30); end;
為控件SUDP的OnDataReceived事件添加代碼: procedure TServer.SUDPDataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String); var ReqCode:array[0..29] of char;ReqCodeStr:string; begin ReqCodeStr:='show'+Edit1.text; StrpCopy(ReqCode,ReqCodeStr); SUDP.ReadStream(TmpStream); RsltStream.CopyFrom(TmpStream,NumberBytes); if NumberBytes< BufSize then { 數據已讀完 } begin RsltStream.Position:=0; Image1.Picture.Bitmap.LoadFromStream(RsltStream); TmpStream.Clear; RsltStream.Clear; end else begin TmpStream.Clear; ReqCode:='show'; SUDP.RemoteHost:=Edit2.Text; SUDP.SendBuffer(ReqCode,30); end; end;