将远程控制应用于教学中已成为目前计算机化教学的重要手段一定有很多的网虫想了解这种网络教学方式的编程原理吧在此我们就以一个简单的远程控制程序作为示例说明这种网络编程的基本原理本程序以Delphi编程为例 其实该程序的工作机制很简单受控方运行一个程序用于侦听端口并接收数据包而主控方通过端口给受控方的端口发送数据包根据这个原理我们编写两个程序一个是控制方的而另一个是受控方的把这两个程序运行在两台不同的机器上受控机等待控制机发送过来的数据然后执行相应的操作(如本例中的重启) Delphi中有两类控件可以实现上面的目的一类是控制方使用ClientSocket受控方使用ServerSocket(均在Internet页)另一类是双方都使用NMUDP(在FastNet页)我们知道网络传输都是不可靠的也就是说传输的数据有可能丢失而这两类控件的区别是前者使用TCP(Transfer Control Protocol传输控制协议)TCP协议是面向连接每次双方建立连接(或断开)时需经过三次握手较为耗时但数据传输可靠而后者使用UDP(User Datagram Protocol用户报文协议)它是面向无连接的发出数据不需对方确认这样速度比TCP快但数据有可能丢失因此它不可靠由于控制所需传送的数据量不大而且需要较高的可靠性因此一般使用前者程序说明如下 第一步开始控制方程序在其中加入clientsocket控件取名control设置host属性为受控机ip地址port属性为(端口可以随便设置但不要与一些默认端口重复如等) 第二步在FormCreate事件中加入代码controlopen; //打开与受控机的通信 第三步加入个Button设置caption为重新启动并在ButtonClick事件中加入代码controlSocketSendText(reboot)//通知受控机重新启动这样就完成了控制方的工作了 第四步开始受控方的程序在其中加入serversocket控件取名undercontrol设置port属性为(与控制方的端口一致)active属性为true 第五步在undercontrol的OnclientRead事件中加入代码if SocketReceiveText=reboot then ExitWindowsEx(EWX_REBOOT); //重启的API函数 这样就完成了代码的工作然后编译这两个程序生成两个exe文件分别放在两台机器上运行(记得先运行Win下的受控机程序)在控制机按下重新启动的Button(按钮)受控机就重新启动了远程控制机器重启成功实现 由于篇幅的限制以上忽略了很多细节的东西(如出错处理)而且只能完成远程控制的一种功能有兴趣者可在此基础上完善可实现网络软件管理中的其它功能如鼠标键盘锁定关机抓取屏幕文件操作视频传输等在此就不多介绍了有兴趣者可以上网多查看些这方面的资料 |