WEB开发网
开发学院软件开发VC 基于套接字通信的远程截屏显示与控制技术 阅读

基于套接字通信的远程截屏显示与控制技术

 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 屏幕数据传送

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;

上一页  1 2 3 4 5 6  下一页

Tags:基于 套接字 通信

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接