中国程序员联盟 正在重新改版中ing 不便之处还请见谅 改版后将内容涉及java delphi .net php
 
  首页 | 数据库开发 | 网络通讯 | 多线程 | 多媒体开发 | 图像处理 | 程序人生 | 系统函数 | 控件开发 | Web服务
 
  当前位置:笨鱼delphi技术网>网络通讯>文章内容

delphi 用Delphi实现远程控制

来源:网络 关于:轶名 发布时间:2007-06-29   [收藏] [推荐]
WinSock是一组API,用于在网络上传输数据和交换信息。虽然现在有很多工具如FTP程序可以在网络上传输数据和文件,但是通过WinSock编程有更大的灵活性,它不需要关心网络连接的细节,然而用WinSock编程却很复杂,但是在Delphi中我们并不需要直接与WinSock的API打交道,因为TClientSocket元件和TServerSocket元件(在Internet页)封装了WinSock的大部分API,使得对WinSock的访问大大简化。下面这个远程控制的例子就很清楚地说明了这个问题,它可以发送一个消息给对方,并能够使对方的电脑关闭、重新启动或重新登录。

一、实现原理

---- 实行远程控制,实际上就是一个服务器程序(以下简称被控程序)和一个客户程序(以下简称主控程序):被控方即为服务器程序,它监听客户的请求,并作出处理;主控方即为客户程序,它连接上服务器后,发出自己的请求,服务器便根据自已的请求进行不同的响应。

二、编写主控程序

---- 1、新建一个项目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;   
          end;
       end;
---- 5、Button2的OnClick事件代码如下:
procedure TForm1.Button2Click(Sender: TObject);
       begin
          if ConnectFlag then
ClientSocket1.Socket.SendText(Edit1.Text)
  //如果连接成功则发送字符串
          else
Application.MessageBox(PChar('    没有连接到地址 :
 ' + Edit2.Text+'。'+
#13+'检查IP地址是否存在或是否已经连接!'),'
提示信息',MB_OK+MB_ICONSTOP);
       end;    

三、编写被控程序

---- 1、新建一个项目Server.dpr,并把一个TServerSocket元件放到Form上,它的属性设置如下:Active设为True;Port设为100,其它属性按默认值。

---- 2、ServerSocket1的OnClientRead事件代码如下:

procedure TForm1.ServerSocket1ClientRead
(Sender: TObject;Socket: TCustomWinSocket);
       var
         Str:PChar;
         Code,V:Integer;
       begin
   Str:=PChar(Socket.ReceiveText);  //接收字符串
Val(Str,V,Code); //处理接收的字符串,首先转换字符串为整数   
  if Code< >0 then  
Application.MessageBox(Str,'提示信息',
MB_OK+MB_ICONINFORMATION) 
//如果转换后的数据不是一个整型数就通过消息框来显示字符串
         else
           if (V=0)or(V=1)or(V=2) then 
             ExitWindowsEx(V,0) 
//调用Windows的API函数(V=0表示重新登录、
V=1表示关机、V=2表示重启动)
           else
Application.MessageBox(Str,'提示信息',
MB_OK+MB_ICONINFORMATION); 
//转换后数据不为0、1、2时在消息框内显示字符串
       end;
---- 3、修改项目文件,不让窗口显示并且防止它运行两次,修改begin和end之间的代码如下:
       begin
Application.Initialize;
if FindWindow('TForm1','Form1')=0 then begin 
//当没有找到Form1时执行下面代码
Application.ShowMainForm:=False; //不显示主窗口
Application.CreateForm(TForm1, Form1);
Application.Run;
          end;
       end.

四、注意事项

---- 1、网络要装配正确并安装TCP/IP协议,且要正常运行。

---- 2、首先要运行被控程序。

---- 3、必须知道对方的IP地址或主机名


[浏览: 次]   
上一篇:delphi 判断协议是否安装   下一篇:delphi 获取BIOS信息
[收藏] [推荐] [返回顶部] [打印本页] [关闭窗口]  
    评论加载中…
google adsense热点文章
·delphi 学习WinSocket的编程
·delphi 木马DIY
·delphi Delphi实现UDP广播
·delphi 检测计算机的 Internet 连接状
·delphi 获取BIOS信息
·delphi Base64编码转换
·delphi 发送raw IP类型的数据包
·delphi 使用ftp控件下载目录
·delphi 获取IP地址以及全部TCPIP连接的
·delphi 监测TCP IP协议是否安装了
·delphi 编写上网计费软件
·delphi Modem的指令
     delphi技术网 | firefox 下载 | Avant Browser下载 | dedecms 技术网 | drupal 爱好者 | php 技术网
  Copyright@www.delphichm.com,2006-2009.All Rights Reserved.
 
程序员联盟 | delphi Java .net|QQ:707102932