朱 勇
摘要 本文将从技术层面讨论使用C++ Builder提供的Socket组件来开发一个具有监控网络上其他主机功能的程序。本程序对计算机远程监控管理和远程教学等领域都有一定的借鉴作用。
关键词 Socket,协议,远程监控
一、 网络编程与Socket组件
网络编程中要解决的一个重要问题是网络的通信问题,当前主流的网络通信是建立在TCP/IP协议基础上的。TCP/IP协议是网络上的计算机之间进行互相通信所要遵守的一系列规范要求。套接字(Socket)是应用程序同TCP/IP协议之间的接口。利用C++ Builder提供的Socket组件就可以开发出这种基于TCP/IP协议的网络应用程序。在本文中,主要使用TServerSocket(服务器端组件)、TClientSocket(客户端组件)来实现网络通信功能,上面两个组件封装了WinSock API(实现通信功能的底层应用程序接口),用户在不需要了解TCP/IP通信协议和处理底层通信细节的情况下高效地开发出各种网络应用程序。
TServerSocket(服务器端组件)包括的重要属性和事件有: Active表示该组件是否激活; Port是服务器端组件工作的端口号,它用于区别同一台主机上不同的应用与服务,在本程序中它设为1024;ServerType是采用的通信方式,有stNonBlocking(非阻塞式,即收发数据时,不等收发完成就转入其他的工作)和stThreadBlocking(阻塞式,即收发数据时,等收发完成后,才转入其他的工作),在本程序中采用的是非阻塞的方式;OnAccept事件为接受客户端的请求建立连接时触发的事件;OnRead事件为从客户端接收数据时触发的事件。
TClientSocket(客户端组件)包括的重要属性和事件有: Host是要连接的对方主机IP地址; Port是客户端组件工作的端口号,在本程序中它设为1024; ClientType是采用的通信方式,stNonBlocking(非阻塞式)或stThreadBlocking(阻塞式),在本程序中采用的是非阻塞的方式;当从服务器端接收数据时触发OnRead事件;当和服务器端建立连接时触发OnConnect事件;当通信出现错误时触发OnError事件。
二、 对网络上主机远程监控
监控的过程包括监视和控制两个过程。监视过程,指从目标主机上获取当前屏幕的图像;控制过程,指由控制端发出控制命令字符串和参数,目标主机执行命令和参数,并回传结果。控制命令包括三类:鼠标控制命令、键盘控制命令和自定义控制命令。
要实现对网络上主机的网络监视需要经历以下几个步骤:客户端建立与目标主机(服务器)的网络连接;客户端发出截取目标主机上的当前屏幕的命令字符串;目标主机收到命令字符串后调用截屏程序模块开始截取主机上的当前屏幕;将当前屏幕图像传送给客户端;客户端接收并显示图像。
|