基于套接字通信的远程截屏显示与控制技术
2008-05-31 21:39:12 来源:WEB开发网GetDIBits( hdc, bitmap,0L,(DWORD)bi.biHeight,(LPBYTE)lpbi +(bi.biSize+ncolors
*sizeof(RGBQUAD)),(LPBITMAPINFO)lpbi,(DWORD)DIB_RGB_COLORS);
3 屏幕数据传送控制
屏幕数据的传送控制主要在如何确认服务端与客户端之间的连接,服务端如何定时分块发送屏幕数据,客户端如何拼接屏幕数据并显示图像,服务端如何响应客户端的鼠标事件等几个方面。
3.1服务端与客户端的连接确认
双方连接可以由客户端指定服务端IP地址,或者在子网段内发送通信对方标识,服务端接收到该标识后,向客户端发送确认标识,客户端收到确认信息后,表明双方实现连接。
以下代码为客户端程序片断,服务端程序将发送和接收函数的顺序对调即可。
char cFlag[8]="CopyScr";
send(sktClient,cFlag,8,0);//发送client端标志
recv(sktClient,cFlag,8,0);//接收server端标志
3.2服务端定时分块发送屏幕数据
客户端以某一定时器设定为间隔,向服务端请求屏幕数据,服务端收到请求后,首先获取当前屏幕的GDI位图数据,并转化为DIB位图数据,随后采用分块传送的方式,向客户端发送屏幕的位图数据,分块过程如下所示:
(1)发送屏幕位图数据的相关信息,诸如尺寸、长度、高度等信息至客户端;
send(sktClient,(char*)&ScrInfo,sizeof(ScrInfo)+1,0);
(2)分块发送DIB位图数据,以SENDBLOCK为分块尺寸,同时调整当前数据指针位置;
LPBYTE plmagePoint=(LPBYTE)hDib;
for(WORD i=0;i<(ScrInfo.dwSize/SENDBLOCK);i++){
send(sktClient,(char*)plmagePoint,sizeof(BYTE)*SENDBLOCK,0);
plmagePoint=plmagePoint + SENDBLOCK;
- ››基于IP地址的vsftp服务器
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››基于Windows Azure的云计算应用设计
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
- ››基于SolidWarks齿轮机构的运动分析与仿真
- ››基于Windwos Server 2008故障转移群
- ››基于JavaScript的REST客户端框架
- ››基于JavaScript和CSS的Web图表框架横向对比
更多精彩
赞助商链接