开发界
首页 移动开发 在线交易 IT笔记 网络技术 操作系统 企业架构 数据库 考试认证 IT培训 开源软件 数据存储 行业资讯
大家都在看:java   开发   C#   oracle   mysql   android   web开发   学习   sqlserver   linux   asp   php   ajax   javascript   css   html
Delphi中远程控制的实现
2012-07-10 11:35:40 来源:开发界 作者:admin 栏目:Delphi 责任编辑:delphi
[导读]实行远程控制,实际上就是一个服务器程序(以下简称被控程序)和一个客户程序
  实行远程控制,实际上就是一个服务器程序(以下简称被控程序)和一个客户程序(以下简称主控程序):被控方即为服务器程序,它监听客户的请求,并作出相应的处理;主控方即为客户程序,它连接上服务器后,发出自己的请求,服务器便根据自已的请求进行不同的响应。而WinSock是一组API,用于在网络上传输数据和交换信息。通过WinSock编程有更大的灵活性,因为它不需要关心网络连接的细节,然而用WinSock编程却很复杂。但是,在Delphi中我们并不需要直接与WinSock的API打交道,因为TClientSocket元件和TServerSocket元件(在Internet页)封装了WinSock的大部分API,使得对WinSock的访问大大简化。下面这个简单的远程控制的例子就很清楚地说明了这个问题,它可以发送一个消息给对方,对方收到后发出信息确认。当然,在实际的编程中,我们可以根据需要,要求被控方可以根据主控方发来的信息,经过判断后作出相应的动作。如关机、传送文件…
  一、主控程序(Client端):
  ClientSocket1的Port设为:2058。当然,可以改变,但要求主控程序和被控程序的Port值一致。
  
  
  源程序如下:
  unitmain;
  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;
  procedureClientSocket1Read(Sender:TObject;Socket:TCustomWinSocket);
  procedureButton2Click(Sender:TObject);
  procedureButton1Click(Sender:TObject);
  procedureFormClose(Sender:TObject;varAction:TCloseAction);
  procedureEdit1KeyPress(Sender:TObject;varKey:Char);
  private
  
  procedureSend_Message;//发送信息
  {Privatedeclarations}
  public
  {Publicdeclarations}
  end;
  var
  MainForm:TMainForm;
  implementation
  {$R*.DFM}
  procedureTMainForm.Send_Message;
  begin
  ClientSocket1.Socket.SendText(Edit1.Text);//发送信息
  Edit1.text:='';
  end;
  procedureTMainForm.ClientSocket1Read(Sender:TObject;
  Socket:TCustomWinSocket);
  var
  s:string;
  begin
  s:=ClientSocket1.Socket.ReceiveText;//接收信息
  Memo1.Lines.Add('服务器端返回的信息为:'+s);
  end;
  procedureTMainForm.Button2Click(Sender:TObject);
  begin
  ifButton2.Caption='登录'then
  begin
  Button2.Caption:='断开';
  ClientSocket1.Address:=Edit2.Text;
  ClientSocket1.Active:=False;
  ClientSocket1.Active:=True;
  Button1.Enabled:=True;
  Edit1.Enabled:=True;
  endelse
  begin
  Button2.Caption:='登录';
  ClientSocket1.Active:=False;
  Button1.Enabled:=False;
  Edit1.Enabled:=False;
  end;
  end;
  procedureTMainForm.Button1Click(Sender:TObject);
  begin
  Send_Message;
  end;
  procedureTMainForm.FormClose(Sender:TObject;varAction:TCloseAction);
  begin
  ifClientSocket1.Activethen
  ClientSocket1.Active:=False;
  end;
  procedureTMainForm.Edit1KeyPress(Sender:TObject;varKey:Char);
  begin
  ifkey=#13then
  begin
  key:=#0;
  Send_Message;
  end;
  end;
  end.
版权所有:转载请注明出处!
分享到:
上一篇Delphi中DBEdit组件使用方法 下一篇为Delphi程序添加自动滚动的工具栏
您可能还喜欢
今日最新资讯 最新推荐信息
考试认证 更多
开发技术 更多
移动开发 更多

关于开发界 | 合作伙伴 | 联系我们 | 友情链接 | 版权声明 | 网站制作 | 网站地图 | 加入收藏 | 设为首页

Copyright@2012-2016 开发界 京ICP备12027873号