欢迎来到天天文库
浏览记录
ID:33488669
大小:80.07 KB
页数:6页
时间:2019-02-26
《基于winsock通信的远程屏幕抓取技术研究》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7卷第4期石家庄铁路职业技术学院学报VOL.7No.42008年12月JOURNALOFSHIJIAZHUANGINSTITUTEOFRAILWAYTECHNOLOGYDec.2008基于Winsock通信的远程屏幕抓取技术研究1)2)3)刘佳冯震单娟1)2)(石家庄铁路职业技术学院河北石家庄050041湖北师范学院湖北黄石4350023)河北省大中专院校学生信息咨询与就业指导中心河北石家庄050061)摘要:提出一种基于Winsock通信的远程抓屏功能的实现方法。采用C/S模式,基于TCP协议进行通信,Client
2、端调用Winsock发送截取屏幕的命令,Server端接收命令并运用WindowsAPI函数和Winsock实现屏幕的抓取和远程数据传送;使用柯达公司的ImgEdit控件对截屏后的图像文件进行压缩,便于数据的传输;实验结果表明,该方法能方便、快捷地实现远程计算机的屏幕抓取,为远程智能监控的发展提供一种有效的软件实现方法。关键词:远程抓屏WinsockTCP协议WindowsAPI中图分类号:TP393.09文献标识码:A文章编号:1673-1816(2008)04-0054-06近年来,随着PC技术的广泛应用和网络的不
3、断发展,网络技术已经成为计算机领域最为热门[1][2]的发展方向,尤其是网络中的网络远程控制技术已经广泛的应用于网络自动化管理、实时监控、[3]计算机教学、以及各种自动化工业控制等方面。远程屏幕监控技术已经成为远程控制中非常热门的发展方向。在网络教学和机房管理的实际工作中,常常需要对学生机进行监控,以到达督促学习的目的。目前国内外有一些成熟的监控和管理软件,但是大部分都是基于硬件还原卡的原理,大量机器硬件的安装需要耗费一定的资金,因此为了节省管理的成本和实际教学的需要,本文介绍一种利用VB的Winsock控件编程实现的
4、远程屏幕捕获的方法。1远程网络通信的实现远程屏幕抓取程序实际上是一种客户机/服务器程序,服务器程序安装在被控制的计算机端,客户端安装在控制端,客户端发送命令,服控制端务器端接受命令并执行相应的截屏操作。因此解决网络客户端与服务器端的通信就通过TCP协议进行通信成了远程屏幕抓取程序实现的基础。Winsock通信是网络通信过程中应用广泛、被控端1被控端2……….被控端n使用灵活的一种方式,因此使用Winsock图1客户端与服务器进行通信控件实现远程计算机的连接,鉴于抓屏后形成的图像文件所包含的字节数较大,并且Winsock
5、控件在接收数据时每次接收的数据量较小,为了能在控制端看到完整的所截图像,本文采用TCP协议,因为该协议是基于连接的协议,提供可靠收稿日期:2008-08-12作者简介:刘佳(1980-),男,汉,河北石家庄人,硕士,研究方向人工智能。54万方数据第4期刘佳,等基于Winsock通信的远程屏幕抓取技术研究的流服务,能保证数据的正确传输。图1描述了主控端与被控端之间的控制和通信机制。2网络远程抓屏技术的实现被控端向控制端发出连接请求2.1实现的流程和主要步骤控制端通过TCP协议向被控端发送截取屏幕连接成功?的命令,被控端收
6、到命令后自动截取自己的屏幕,然后将形成的图片文件数据发送给控制端,控制端将收到的图片进行显示就可以了。远程屏幕捕获实控制端向被控端发出截取屏幕命令现的流程图如图2所示。实现远程动态屏幕捕获功能包括以下四个主被控端接收命令,截取屏幕图像并保存为文件要步骤:(1)通过Winsock控件在两端建立基于TCP被控端向控制端传送图像文件数据协议的连接。(2)被控端接收命令并截取屏幕。(3)被控端向控制端发送图片数据。控制端接收图像文件数据并显示(4)控制端接收数据并进行显示。图2远程屏幕捕获的流程图2.2远程抓屏技术的代码实现首
7、先在被控端设置一个Winsock控件,命名为sersock,由于被控端的数量较多,因此需要在控制端设置一个关于Winsock控件的动态数组,用于连接各个被控端,数组名称为clitsock。然后将控制端的clitsock以及被控端的sersock的通信协议设置为TCP。控制端调用clitsock的listen方法进行侦听,查看是否有被控端发出连接请求,如果有,控制端动态的增加Winsock控件通过来接受每一个被控端的连接请求。通过ConnectionRequest事件调用Accept方法建立连接后,两端计算机可以发送、接
8、收对方数据。如果要发送数据,需调用SendData方法。当接收到数据时,会发生DataArrival事件,调用DataArrival事件中的GetData方法就可以获得对方传送的数据。(1)Winsock控件的设置由于被控端主动向控制端发出连接请求,因此需要设置远程访问的IP地址和端口:sersock.RemoteHost="19
此文档下载收益归作者所有