资源大全 | 神秘文化 | 在线翻译 | QQ专区 | 视频教程 | 彩信频道 | 搜索引擎 | BT下载 |  | 网站地图
设为首页
加入收藏
联系站长
您现在的位置: 一百网络 >> 其他编程 >> Delphi编程 >> 文档正文
最近更新
普通文档 Together与Visual.Studi
普通文档 Together与Visual.Studi
普通文档 Together与Visual.Studi
普通文档 Delphi实现在数据库中存
普通文档 Delphi开发多媒体播放音
普通文档 开发工具大比拼之Visual
普通文档 Delphi串口通讯的监听
普通文档 Delphi中远程控制的实现
普通文档 利用Delphi编写Socket通
普通文档 利用Delphi开发网络数据
推荐文章
  • 此栏目下没有推荐文档
  • Delphi中远程控制的实现(1)

    文章作者:佚名 录入时间:2006-6-2 来源:不详
    网站声明:本站的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出处和原始作者,文章版权归本网站与文章作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。


    实行远程控制,实际上就是一个服务器程序(以下简称被控程序)和一个客户程序(以下简称主控程序):被控方即为服务器程序,它监听客户的请求,并作出相应的处理;主控方即为客户程序,它连接上服务器后,发出自己的请求,服务器便根据自已的请求进行不同的响应。而WinSock是一组API,用于在网络上传输数据和交换信息。通过WinSock编程有更大的灵活性,因为它不需要关心网络连接的细节,然而用WinSock编程却很复杂。但是,在Delphi中我们并不需要直接与WinSock的API打交道,因为TClientSocket元件和TServerSocket元件(在Internet页)封装了WinSock的大部分API,使得对WinSock的访问大大简化。下面这个简单的远程控制的例子就很清楚地说明了这个问题,它可以发送一个消息给对方,对方收到后发出信息确认。当然,在实际的编程中,我们可以根据需要,要求被控方可以根据主控方发来的信息,经过判断后作出相应的动作。如关机、传送文件…
    一、主控程序(Client端):

    ClientSocket1的Port设为:2058。当然,可以改变,但要求主控程序和被控程序的Port值一致。界面如下:


    源程序如下:

    unit main;

    interface

    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls, ExtCtrls, ScktComp;

    type

    TMainForm = class(TForm)

    Panel1: TPanel;

    Panel2: TPanel;

    Panel3: TPanel;

    Memo1: TMemo;

    Edit1: TEdit;

    Button1: TButton;

    Button2: TButton;

    ClientSocket1: TClientSocket;

    Edit2: TEdit;

    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);

    procedure Button2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure Edit1KeyPress(Sender: TObject; var Key: Char);

    private


    procedure Send_Message;//发送信息

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    MainForm: TMainForm;

    implementation

    {$R *.DFM}

    procedure TMainForm.Send_Message;

    begin

    ClientSocket1.Socket.SendText(Edit1.Text);//发送信息

    Edit1.text:='';

    end;

    procedure TMainForm.ClientSocket1Read(Sender: TObject;

    Socket: TCustomWinSocket);

    var

    s:string;

    begin

    s:=ClientSocket1.Socket.ReceiveText;//接收信息

    Memo1.Lines.Add('服务器端返回的信息为:'+s);

    end;

    procedure TMainForm.Button2Click(Sender: TObject);

    begin

    if Button2.Caption='登录' then

    begin

    Button2.Caption:='断开';

    ClientSocket1.Address:=Edit2.Text;

    ClientSocket1.Active:=False;

    ClientSocket1.Active:=True;

    Button1.Enabled:=True;

    Edit1.Enabled:=True;

    end else

    begin

    Button2.Caption:='登录';

    ClientSocket1.Active:=False;

    Button1.Enabled:=False;

    Edit1.Enabled:=False;

    end;

    end;

    procedure TMainForm.Button1Click(Sender: TObject);

    begin

    Send_Message;

    end;

    procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);

    begin

    if ClientSocket1.Active then

    ClientSocket1.Active:=False;

    end;

    procedure TMainForm.Edit1KeyPress(Sender: TObject; var Key: Char);

    begin

    if key=#13 then

    begin

    key:=#0;

    Send_Message;

    end;

    end;

    end.


      共2页: 1 [2] 下一页   

    二、被控方的程序(Server端):

    ServerSocket1的Port设为:2058。程序界面如下:



    源程序如下:

    unit main;

    interface

    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ScktComp;

    type

    TMainForm = class(TForm)

    Panel1: TPanel;

    Panel2: TPanel;

    Panel3: TPanel;

    Memo1: TMemo;

    Button1: TButton;

    Label1: TLabel;

    ServerSocket1: TServerSocket;

    procedure ServerSocket1Listen(Sender: TObject;

    Socket: TCustomWinSocket);

    procedure ServerSocket1ClientConnect(Sender: TObject;

    Socket: TCustomWinSocket);

    procedure ServerSocket1ClientDisconnect(Sender: TObject;

    Socket: TCustomWinSocket);

    procedure ServerSocket1ClientRead(Sender: TObject;

    Socket: TCustomWinSocket);

    procedure Button1Click(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    private

    procedure UpdateState;//更新当前的连接信息

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    MainForm: TMainForm;

    implementation

    {$R *.DFM}

    procedure TMainForm.UpdateState;

    begin

    Label1.Caption:='在线人数为:'+IntToStr(ServerSocket1.Socket.ActiveConnections);

    end;

    procedure TMainForm.ServerSocket1Listen(Sender: TObject;

    Socket: TCustomWinSocket);

    begin

    UpdateState;

    end;

    procedure TMainForm.ServerSocket1ClientConnect(Sender: TObject;

    Socket: TCustomWinSocket);

    begin

    UpdateState;

    end;

    procedure TMainForm.ServerSocket1ClientDisconnect(Sender: TObject;

    Socket: TCustomWinSocket);

    begin

    UpdateState;
    end;

    procedure TMainForm.ServerSocket1ClientRead(Sender: TObject;

    Socket: TCustomWinSocket);

    var

    s:string;

    begin

    s:=Socket.ReceiveText;

    Memo1.Lines.Add('从客户端接收的信息为:'+s);

    Socket.SendText('接收信息成功!');

    end;

    procedure TMainForm.Button1Click(Sender: TObject);

    begin

    if Button1.Caption='启动' then

    begin

    Button1.Caption:='停止';

    ServerSocket1.Active:=False;

    ServerSocket1.Active:=True;

    end else

    begin

    Button1.Caption:='启动';

    ServerSocket1.Active:=False;

    end;

    end;

    procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);

    begin

    if ServerSocket1.Active then

    ServerSocket1.Active:=False;

    end;

    end.


      这样,程序就编写成功。运行一下看看自己的劳动成果吧!先运行Server端的程序,然后再运行Client端的程序。界面如下:


      以上程序在Delphi 5.0和 window 98下运行通过。


      共2页: 上一页 [1] 2   

  • 上一篇文档:

  • 下一篇文档:
  •     查找更多“Delphi中远程控制的实现(1)”的内容  
    相关连接
  • 将Java程序变成Windows系统服务

  • 浅析Java多线程程序设计机制

  • Java初学者需掌握的30个基本概念(1)

  • JDBC 入门(1)

  • 面向Java程序员的Ajax:构建动态Java程序(1)