分享
 
 
 

基于阻塞Socket的远程控制类库-TNetCommand-01

王朝delphi·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

问题的提出

远程控制类软件的编写是个痛苦的过程,大概的思路是(假定,控制端为Client端,受控端为Server端):

1. Client端发出命令

2. Server端解析命令

3. Server端通过解析命令,执行相应的操作

4. Server处理完毕后返回处理结果

5. Client端接收处理结果

请注意Step 2,3中Server端的处理。如果所有这些都在Server端的一个过程中处理是非常可怕的事。你不得不需要一个大的Case语句,也许这样庞大且不停膨胀Case语句超越你的控制能力,逼迫你用更自由一点排比句if …then…,但这一切无疑都是一个痛苦的过程。

试想增加一项功能在Server端代价:

1. 增加一个命令解析if newCommand then newFunction;

2. 新增一个newFunction;

看起来不错,勤奋一点还算可行。但如果是团队开发,这种开发模式似乎不太容易忍受。总不能每新加一项功能,大家都要在Server端指手划脚。

问题的提出:

1. 如何才能避免因为功能增加,导致在Server端Case语句的膨胀?

2. 如何适应团队的开发?

设计思路

在同一个类中实现Client端和Server端的处理。

这样做得原因只有一个,将新增功能的处理在所属类中完成。换句话说就是将上述Server端的代价在类中完成。-“换汤不换药”?

用统一的形式表达Client端的请求和Server端的响应。

上述“换汤不换药”的苦衷,在这里希望能博得一些同情。为了解决问题1,而陷入形式主义的泥潭。好了,干巴巴的陈述只会让人感到沮丧,让我们直面代码。

TNetCommand类

源代码

// uNetCommand 为其他相关网络操作的祖先类

{{

作者:蛐蛐

时间:2004.5.24

}

unit uNetCommand;

interface

uses

Classes, IdTCPServer, IdTCPClient;

type

// TNetCommand

TNetCommand = class (TObject)

public

CommandType: Integer;??????????

RemoteCommandTime: string;

function ReadData(Client: TIdTCPClient): Boolean; virtual; abstract;

function WriteData(Server: TIdTCPServerConnection): Boolean; virtual; abstract;

end;

const

TCP_QUIT=2000;????? // 退出

TCP_NETIMAGE=3000;? // 图像操作

TCP_NETFILE=3001;?? // 文件操作

TCP_NETPROCESS=3002;? // 进程操作

TCP_NETSYSTEMINFO=3003; // 系统信息

TCP_NETEXITWINDOWS=3004;? // 退出Windows

TCP_NETKEYBOARD=3005; // 键盘操作

TCP_NETMOUSE=3006;? // 鼠标操作

implementation

end.

说明

TNetCommand类只有四个成员。CommandType用于描述Client端具体请求内容,可以想到在其子类中一定有许多关于此的常量定义。ReadData 和WriteData 两个虚函数正是我所说的“用统一的形式表达Client端的请求和Server端的响应”。

等等,uNetCommand单元中下面的一组常量是做什么用的?先看一下他的一个子类TNetImage是怎么工作的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有