background image

    如何用 Delphi6

 

实现对计算机的远程控制

WinSock 是一组 API,用于在网络上传输数据和交换信息。虽然

现在有很多工具如

FTP 程序可以在网络上传输数据和文件,但是通过 WinSock 编程有更大的灵活性,它不需要关

心网络连接的细节,然而用

WinSock 编程却很复杂,但是在 Delphi 中我们并不需要直接与 WinSock 的 API 打

交道,因为

TClientSocket 元件和 TServerSocket 元件(Internet 页)封装了 WinSock 的大部分 API,

使得对

WinSock 的访问大大简化。下面这个远程控制的例子就很清楚地说明了这个问题,它可以发送一个消息给

 

对方,并能够使对方的电脑关闭、重新启动或重新登录。

 

一、实现原理
  实行远程控制,实际上就是一个服务器程序(以下简称被控程序)和一个客户程序(以下简称主控程序):
被控方即为服务器程序,它

*客户的请求,并作出处理;主控方即为客户程序,它连接上服务器后,发出自己的请

 

求,服务器便根据自已的请求进行不同的响应。

 

二、编写主控程序
  新建一个项目

Client.dpr,并把一个 TClientSocket 元件放到 Form 上,它的属性设置如下:Port 设为

100(端口号可任意设置,只要求双方统一),其它属性按默认值。在窗体上添加两个 TEdit:Edit1 用来输入发
送的字符,

Edit2 用来输入 IP 地址;添加两个 TButton:Button1 点击后用来连接被控机,Button2 点击后

用来发送字符,然后声明一个私有变量

ConnectFlag

 

,表示双方是否连接好:

private 
ConnectFlag:Boolean; 

---- 2、ClientSocket1 的 OnConnect

 

事件代码如下:

procedure TForm1.ClientSocket1Connect 
(Sender: TObject;Socket: TCustomWinSocket); 

begin 
ConnectFlag:=True; //

 

表示连接成功

end; 

---- 3、ClientSocket1 的 OnError

 

事件代码如下:

procedure TForm1.ClientSocket1Error(Sender: TObject; 

Socket: TCustomWinSocket; ErrorEvent: 
TErrorEvent;var ErrorCode: Integer); 

begin 
Application.MessageBox(PChar(' 不能连接到 IP

 

地址

: ' + Edit2.Text+'。'+ 
#13+'可能是*程序没有运行或网络故障!'),' 
连接错误

',MB_OK+MB_ICONSTOP); 

ErrorCode := 0; 

end; 

---- 4、Button1 的 OnClick

 

事件代码如下:

procedure TForm1.Button1Click(Sender: TObject); 

begin 
with ClientSocket1 do begin 

if Active then begin 
Active := False;//

 

在连接之前首先关闭

ConnectFlag:=False; //

 

置连接标志为假

end; 

if Length(Edit2.Text) > 0 then begin 
Host := Edit2.Text; //指定 IP

 

地址或主机名

Active := True; 
end;