远程控制系统的设计与实现
- 格式:pdf
- 大小:273.09 KB
- 文档页数:6
收稿日期
:2003-04-28
作者简介:吴志攀(1975-),男,广东五华人,惠州学院电子系教师,中南大学信息科学与工程学院
在读研究生
.
第24卷第3期2004年6月惠州学院学报(自然科学版
)
JournalofHuizhouUniversity(Nat.Sci.)Vol1241No13Jun12004
远程控制系统的设计与实现
吴志攀,赵跃龙,杜华英
(中南大学信息科学与工程学院,湖南 长沙 410083)
摘 要 本文用VB对远程控制系统进行了设计与实现,并对其中每个部分的功能
进行了较为详细的说明
关键词 远程控制
;Winsock;VB.
中图分类号:TP393.5 文献标识码:A 文章编号
:1671-5934(2004)03-0038-06
1
引言
远程控制系统用处很大,实用性很强,应用范围很广。可以应用在教学方面:教师机控
制着学生机,实现远程广播、远程控制、文件共享传送等功能;也可以应用在网吧的计算机
管理,对计算机进行监控,用于上机收费等。
2
简易远程控制系统实现思想
2.1本系统所具有的基本功能:
①实现主机远程控制客户机重新注销、重新启动、强行关机。
②实现主机远程撤消客户机的桌面背景等,锁定客户机的键盘、鼠标。
③实现主机与客户机的互发短信、文字聊天。
④实现主机与客户机的文件传输。
⑤实现主机信息广播到各个客户机,远程监视客户机,远程控制客户机。
2.2
本系统的实现思想
本系统使用Winsock进行网络通信。客户/服务器模式兴起于90年代,到了90年代的
中期开始成为流行的使用模式,它的出现从总体上讲有以下两个原因
:
第一个原因,在客户/服务器模式出现以前,占主导地位的是60年代的集中式大型机模
式和80年代的PC/文件服务器模式。它们有很多的缺点:大型机模式实现了高度的集中控
制,但是操作不便;而PC/文件服务器模式虽然提供了较好的用户界面,但是却大大提高了
体系的整体开销和维护成本。而客户/服务器模式在继承了PC模式的友好用户界面的基础
之上,又利用分布式的技术提高了执行效率,因而得到了广泛的应用。
第二个原因是从进程通信的角度去分析。在实际中,两个进行通信的进程是不对称的情
况是很普遍的。例如远程文件访问,一个无盘工作站访问一个远程的文件系统。工作站上执
行的程序和文件系统上执行的程序及其方式是完全不相同的。在这种应用系统中,工作站只
是发出一些操作请求,例如打开文件、读数据、写数据和关闭文件。而文件系统负责执行这
些操作并把结果送回工作站。这种进程的不对称性也促进了客户/服务器模式的产生。
利用Winsock控件可以与远程计算机建立连接,并通过用户数据文报协议(UDP)或者
传输控制协议(TCP)进行数据交换。这两种协议都可以用来创建客户与服务器应用程序。
本系统采用了后者,建立连接有如下几步
:
第一步:服务器的Winsock控件设置本地端口号,并进入监听状态;客户机的
Winsock
控件设置远程主机的IP地址与远程主机的端口号,并进入连接状态。
在服务器的主界面中放置一个Winsock控件,以便与客户端的Winsock建立连接。在程
序主界面的load()事件中写入以下两句话
:
Winsock1.LocalPort=5000
Winsock1.Listen
第一句是用来指定这个Winsock控件的本地端口号为5000;第二句是用来指定当前的
Winsock控件为监听状态。此时Winsock控件打开5000端口号,
并且监听网内是否有连接与
之相连接。
让客户机上的Winsock控件的远程主机赋值于手工输入的IP地址。然后设置Winsock控
件的远程端口号为5000(与前面服务器的本地端口号要相一致)。再令Winsock控件执行一
个Connect命令,与服务器的Winsock控件进行连接。
Winsock1.RemoteHost=Text1.Text
Winsock1.RemotePort=5000
IfWinsock1.State=0ThenForm1.Winsock1.Connect
第二步:服务器的Winsock控件的ConnectionRequest的事件接收ID号。
PrivateSubWinsock1-ConnectionRequest(ByValrequestIDAsLong
)
IfWinsock1.State<>0ThenWinsock1.Close
Winsock1.AcceptrequestID
ddid=Str$(requestID
)
EndSub
上面的程序是服务器的Winsock控件接收建立连接后的ID号。接收了ID号,说明服务
器客户端已经建立了连接。这样,双方就可以互相发送信息了。
第三步:双方都可以用SendData命令来发送信息了,并且可以在各自的DataArrival事
件中用GetData命令来接收对方发送来的信息。
服务器中的Winsock控件的DataArrival事件
:
PrivateSubWinsock1-DataArrival(ByValbytesTotalAsLong
)
DimstrDataAsString
Winsock1.GetDatastrData
Label4.Caption=”来自”+ddid+”消息:
”
Text4.Text=strData+vbCrLf+Text4.Text
・93・
第3期 惠州学院学报(自然科学版
)
EndSub
客户端中的Winsock控件的DataArrival事件
:
PrivateSubWinsock1-DataArrival(ByValbytesTotalAsLong
)
DimstrDataAsString
Winsock1.GetDatastrData
Text2.Text=strData+vbCrLf+Text2.Text
EndSub
现在,可以在服务器的主界面输入聊天信息,然后发送,客户端的显示窗口便会显示出
服务器输入的信息。同样,在客户端的主界面也可以输入聊天信息,然后发送到服务器,以
实现聊天的功能。
当Winsock控件的状态等于7时,我们便可以从服务器(主机)发送一条命令到客户
机,比如:“锁定远程计算机”,那么我们在客户端接收到这条信息之后,便做客户端“锁定
远程计算机”的操作。
这时候客户端就被锁定了,键盘和鼠标均不能操作。这种锁定方法是调用
WINDOWS
API函数的,也可以直接调用BIOS中断的方法,
使键盘和鼠标失效。要使用键盘和鼠标就
再用BIOS中断把功能恢复过来。两种方法进行比较,当然是后者比较好,前者是键盘鼠标
大部分功能失效,而后者是完全失效。
当客户端被锁定时,服务器同样可以发送一条命令,如“解锁远程计算机”,当客户端
接收到这条命令之后,恢复原来的情形便可。
文件传输的方法有很多,其中一种比较简单的方法是把服务器上的文件打开,然后一个
字节一个字节地读出来,发送到客户端;客户端把接收过来的字节再组合成一个文件,并把
它保存在磁盘上。本系统采用的方法就是这种方法。
实现远程广播可以把服务器的界面广播到客户端,这样可以便于教学。在教师在讲解某
项操作时,广播到客户机,学生可以在自己的计算机旁边听老师的讲解边观看老师的操作
,
达到同步的效果,并且还可以节约投影仪的费用。我们可以把服务器的界面以文件的形式保
存下来,然后调用文件传输把文件传输到客户端,客户端再把文件打开显示出来,便可起到
远程广播的作用。
远程广播,使得服务器的界面传输到客户端,有几种方法。第一种方法是强迫式,就是
不管学生愿不愿意,都传送过去,并且禁止客户端的任何操作,包括键盘和鼠标,使得学生
被迫接受服务器的信息。第二种方法是窗口式,服务器的界面以传送过去之后,以窗口的形
式显示在客户端的显示器上,客户端的用户可以过观看服务器用户的操作边进行模仿性的操
作,可以实时跟进。
实现远程控制可以在服务器上控制客户机的运行,也就是接管客户机的控制权。实现远
程控制可以这样处理,首先把客户端的界面传输到服务器,把客户端的键盘、鼠标功能暂时
使之失效,然后把服务器的键盘鼠标的操作传输到客户端,客户端根据服务器的键盘鼠标操
作弄到客户端上来,相当于是用服务器的键盘鼠标控制客户端。
3
远程控制系统的主要界面和部分代码
3.1
远程控制系统(服务器)的主要界面
・04・
吴志攀 赵跃龙 杜华英 远程控制系统的设计与实现 2004年
3.2
远程控制系统(客户机)的主要界面
・14・
第3期 惠州学院学报(自然科学版
)
3.3
服务端主界面的部分程序清单
DimddidAsString
PrivateSubCombo1-Click
()
IfWinsock1.State=7Then
Winsock1.SendDataCombo1.Text
Else
MsgBox”还未连接到客户机…”,64,”提示信息”
EndIf
EndSub
PrivateSubCombo2-Click
()
IfWinsock1.State=7Then
Text4.Text=Combo2.Text+vbCrLf+Text4.Text
Winsock1.SendDataCombo2.Text
Else
MsgBox”还未连接…”
EndIf
EndSub
PrivateSubCommand1-Click
()
UnloadMe
EndSub
PrivateSubCommand4-Click
()
IfWinsock1.State=7Then
Winsock1.SendData”关闭远程计算机”
Else
MsgBox”还未连接到客户机…”,64,”提示信息”
EndIf
EndSub
PrivateSubCommand6-Click
()
IfWinsock1.State=7Then
Text5.Text=Winsock1.LocalHostName+”(”+CStr(Time())+”):”
+
Text5.Text
Winsock1.SendDataText5.Text
Text4.Text=Text5.Text+vbCrLf+Text4.Text
Text5.Text=””
Else
MsgBox”还未连接到客户机...”,64,”提示信息”
・24・
吴志攀 赵跃龙 杜华英 远程控制系统的设计与实现 2004年