资源描述:
《网络程序设计报告-屏幕监控软件.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、局域网屏幕监控下面是程序执行结果:程序中使用从CSocket继承来的CTCPClientSocket和CTCPServerSocket来相互通信。并由客户端使用OnStart()建立连接,通信地址选用回环地址127.0.0.1来进行测试,如果要监控特定主机,须输入该机ip地址:voidCScreenDlg::OnStart(){clientsocket.Create();run=false;boolret=clientsocket.Connect("127.0.0.1",1033);//连接到1033端口if(!ret)return;this->SetTimer(0,1000,NULL);
2、//设置时间间隔是1秒}服务器端进行监听:BOOLCServerDlg::OnInitDialog(){CDialog::OnInitDialog();//Add"About..."menuitemtosystemmenu.//IDM_ABOUTBOXmustbeinthesystemcommandrange.ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX<0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL){CStringstrAbout
3、Menu;strAboutMenu.LoadString(IDS_ABOUTBOX);if(!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}//Settheiconforthisdialog.Theframeworkdoesthisautomatically//whentheapplication'smainwindowisnotadialogSetIcon(m_hIcon,TRUE);//Setbi
4、giconSetIcon(m_hIcon,FALSE);//Setsmallicon//TODO:Addextrainitializationhereboolret=false;serversocket.SetServerEvent(this);ret=serversocket.Create(1033);//打开1033端口ret=serversocket.Listen();//进行监听returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}建立连接后,服务器端使用GetScreen获取数据:并转换成2进制信息:voidCServerDl
5、g::GetScreen(){CDCdc,bmpdc;intwidth,height;dc.CreateDC("DISPLAY",NULL,NULL,NULL);CBitmapbm;width=GetSystemMetrics(SM_CXSCREEN);height=GetSystemMetrics(SM_CYSCREEN);bm.CreateCompatibleBitmap(&dc,width,height);bmpdc.CreateCompatibleDC(&dc);bmpdc.SelectObject(&bm);bmpdc.BitBlt(0,0,width,height,&dc,0,
6、0,SRCCOPY);bm.GetBitmap(&bitmap);size=bitmap.bmWidthBytes*bitmap.bmHeight;bmpdata=newchar[size];BITMAPINFOHEADERbih;bih.biBitCount=bitmap.bmBitsPixel;bih.biClrImportant=0;bih.biClrUsed=0;bih.biCompression=0;bih.biHeight=bitmap.bmHeight;bih.biPlanes=1;bih.biSize=sizeof(BITMAPINFOHEADER);bih.biSizeI
7、mage=size;bih.biWidth=bitmap.bmWidth;bih.biXPelsPerMeter=0;bih.biYPelsPerMeter=0;GetDIBits(dc,bm,0,bih.biHeight,bmpdata,(BITMAPINFO*)&bih,DIB_RGB_COLORS);}发送图片数据:voidCServerDlg::SendBitData(CSocket*socket){char*d