局域网软件运行监控系统源程序vc++.docx
- 文档编号:4675055
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:19
- 大小:20.38KB
局域网软件运行监控系统源程序vc++.docx
《局域网软件运行监控系统源程序vc++.docx》由会员分享,可在线阅读,更多相关《局域网软件运行监控系统源程序vc++.docx(19页珍藏版)》请在冰点文库上搜索。
局域网软件运行监控系统源程序vc++
附录服务器端
ClientSock.cpp
voidCClientSock:
:
setdlg(CSreenServerDlg*d,intcid,intplen)
{dlg=d;
id=cid;
pklen=plen
//数据包长度为固定,处理比较方便,一般为1000到65000之间.
bufoffset=0;
pkbuf=newchar[plen*2];}
voidCClientSock:
:
OnReceive(intnErrorCode){
//TODO:
Addyourspecializedcodehereand/orcallthebaseclass
dlg->myRecvData(this);
CSocket:
:
OnReceive(nErrorCode);}
voidCClientSock:
:
GetPackage(char*buf)
//接收一个长度为pklen的完整数据包
{do{recvlen=Receive(pkbuf+bufoffset,pklen,0);
if(recvlen>0)
{bufoffset+=recvlen;}
}while(bufoffset //有可能(%1可能性)只接收到部分数据,就再接收一次 memcpy(buf,pkbuf,pklen); bufoffset=bufoffset-pklen; if(bufoffset>0)//有%99的可能性,bufoffset=0 memcpy(pkbuf,pkbuf+pklen,bufoffset);} voidCClientSock: : SendCommandData(inttype,char*buf,intlen) {NETPACKAGEpack; pack.type=type; pack.len=len; memset(pack.buf,7,pklen-8); memcpy(pack.buf,buf,len); Send((char*)&pack,pklen,0);} CSreenServerDlg.CPP voidCSreenServerDlg: : OnTimer(UINTnIDEvent){ //TODO: Addyourmessagehandlercodehereand/orcalldefault if(pclient! =NULL){ CapSreen(); SentSreen(hBitmap,pclient);} CDialog: : OnTimer(nIDEvent);} voidCSreenServerDlg: : SentSreen(HBITMAPhBitmap,CClientSock*pc){ HDChDC=: : CreateDC("DISPLAY",NULL,NULL,NULL); intiBits=: : GetDeviceCaps(hDC,BITSPIXEL)*: : GetDeviceCaps(hDC,PLANES);//当前分辨率下每个像素所占字节数 : : DeleteDC(hDC); WORDwBitCount;//位图中每个像素所占字节数 if(iBits<=1) wBitCount=1; elseif(iBits<=4) wBitCount=4; elseif(iBits<=8) wBitCount=8; elseif(iBits<=24) wBitCount=24; else wBitCount=iBits; DWORDdwPaletteSize=0;//调色板大小,位图中像素字节大小 if(wBitCount<=8) dwPaletteSize=(1< BITMAPbm;//位图属性结构 : : GetObject(hBitmap,sizeof(bm),(LPSTR)&bm); BITMAPINFOHEADERbi,bi1;//位图信息头结构 bi.biSize=sizeof(BITMAPINFOHEADER); bi.biWidth=bm.bmWidth; bi.biHeight=bm.bmHeight; bi.biPlanes=1; bi.biBitCount=wBitCount; bi.biCompression=BI_RGB;//BI_RGB表示位图没有压缩 bi.biSizeImage=0; bi.biXPelsPerMeter=0; bi.biYPelsPerMeter=0; bi.biClrUsed=0; bi.biClrImportant=0; bi1=bi; bi1.biBitCount=24; DWORDdwBmBitsSize=((bm.bmWidth*wBitCount+31)/32)*4*bm.bmHeight; HANDLEhDib=: : GlobalAlloc(GHND,dwBmBitsSize+dwPaletteSize+sizeof(BITMAPINFOHEADER));//为位图内容分配内存 LPBITMAPINFOHEADERlpbi=(LPBITMAPINFOHEADER)GlobalLock(hDib); *lpbi=bi; HANDLEhPal=: : GetStockObject(DEFAULT_PALETTE); //处理调色板 HANDLEhOldPal=NULL; if(hPal){ hDC=: : GetDC(NULL); hOldPal=SelectPalette(hDC,(HPALETTE)hPal,FALSE); RealizePalette(hDC);} intnOutputBytes=0; unsignedchar*m_pDibBits; m_pDibBits=newunsignedchar[dwBmBitsSize]; : : GetDIBits(hDC,hBitmap,0,(UINT)bm.bmHeight,(LPSTR)lpbi+sizeof(BITMAPINFOHEADER)+dwPaletteSize,(BITMAPINFO*)lpbi,DIB_RGB_COLORS);//获取该调色板下新的像素值 if(hOldPal)//恢复调色板 {SelectPalette(hDC,(HPALETTE)hOldPal,TRUE); RealizePalette(hDC); : : ReleaseDC(NULL,hDC);} inti=0,j=0; unsignedchar*pcolor; pcolor=(unsignedchar*)lpbi+sizeof(BITMAPINFOHEADER)+dwPaletteSize; //得到像素值 for(j=0;j if(j%4==3) j++; m_pDibBits[i]=pcolor[j]; i++;} //////////////////////////发送图像头信息///////////////////////////// CapSreenHeadercheader; cheader.factlen=i;//图像长度 NETPACKAGEpack; longfilestep=0; longfileend=0; longlFileSize=i;//图像长度 intend=0;intlen=0; intdtlen=50000;//数据块长度 intplen=sizeof(NETPACKAGE);//数据包长度50008 filestep=lFileSize/dtlen;//数据块数 fileend=lFileSize%dtlen;//最后一块数据长度 cheader.filelength=lFileSize;////图像文件长度 cheader.blocklen=dtlen;//数据块长度 cheader.width=bm.bmWidth;//图像宽度 cheader.height=bm.bmHeight;//图像高度 pack.type=3;//图像头命令 pack.len=sizeof(cheader);//图像头信息长度 memset(pack.buf,7,dtlen); memcpy(pack.buf,(char*)&cheader,pack.len); pc->Send((unsignedchar*)&pack,plen,0);//发送图像头信息 Sleep(100); ////////////////////发送图像内容///////////////// pack.type=4;//图像内容命令 pack.len=dtlen;//图像块长度 for(j=0;j memcpy(pack.buf,&m_pDibBits[j*dtlen],dtlen); pc->Send((unsignedchar*)&pack,plen,0);//发送图像信息} pack.type=5;////最后一块数据命令 pack.len=fileend;//最后一块数据长度 memset(pack.buf,7,dtlen); memcpy(pack.buf,&m_pDibBits[filestep*dtlen],fileend); //发送最后一块数据 pc->Send((unsignedchar*)&pack,plen,0);//发送图像头信息 GlobalUnlock(hDib);//清除 GlobalFree(hDib); delete[]m_pDibBits;} voidCSreenServerDlg: : SendSreenToClient(){ if(pclient! =NULL&&islogin==1) {CapSreen(); SentSreen(hBitmap,pclient);}} 附录客户端 CsreenClientDlg.CPP BOOLCSreenClientDlg: : 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) {CStringstrAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if(! strAboutMenu.IsEmpty()) {pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}} //Settheiconforthisdialog.Theframeworkdoesthisautomatically //whentheapplication'smainwindowisnotadialog SetIcon(m_hIcon,TRUE);//Setbigicon SetIcon(m_hIcon,FALSE);//Setsmallicon //TODO: Addextrainitializationhere pclient=NULL;//定义一个socket类型的借口指针 m_ip="127.0.0.1";//初始化默认ip为本机 m_port=3009;//初始化端口为3009 m_usrpwd="123"; m_usrname="aaa"; UpdateData(FALSE); //将控件关联变量的值传递给控件并改变控件的状态 m_pBIH=NULL;//位图头 m_pDibBits=NULL;//接收图像数据偏移 m_pDib=NULL; pklen=sizeof(NETPACKAGE);//获取数据包的程度 lbitsOffset=0; capflag=0; bcontrol=0; initDrawParam(); returnTRUE;//returnTRUEunlessyousetthefocustoacontrol} voidCSreenClientDlg: : OnButtonGetcap() {//TODO: Addyourcontrolnotificationhandlercodehere if(pclient! =NULL) pclient->SendCommandData(3,(char*)&usrinfo,sizeof(USERINFO));} voidCSreenClientDlg: : OnButtonSavebmp()//保存bmp图片 {//TODO: Addyourcontrolnotificationhandlercodehere charszFilter[]="Allfiles(*.*)|*.*|bmpfiles(*.bmp)|*.bmp||"; CFileDialogfd(false,"bmp","aaa",OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter,NULL); if(IDOK==fd.DoModal()) {m_filename=fd.GetPathName(); CapSreen(); WriteBmpToFile(hBitmap,m_filename); UpdateData(FALSE);}} voidCSreenClientDlg: : WriteBmpToFile(HBITMAPhBitmap,CStringstrFileName) {HDChDC=: : CreateDC("DISPLAY",NULL,NULL,NULL); intiBits=: : GetDeviceCaps(hDC,BITSPIXEL)*: : GetDeviceCaps(hDC,PLANES);//当前分辨率下每个像素所占字节数 : : DeleteDC(hDC); WORDwBitCount;//位图中每个像素所占字节数 if(iBits<=1) wBitCount=1; elseif(iBits<=4) wBitCount=4; elseif(iBits<=8) wBitCount=8; elseif(iBits<=24) wBitCount=24; else wBitCount=iBits; DWORDdwPaletteSize=0;//调色板大小,位图中像素字节大小 if(wBitCount<=8) dwPaletteSize=(1< BITMAPbm;//位图属性结构 : : GetObject(hBitmap,sizeof(bm),(LPSTR)&bm); BITMAPINFOHEADERbi,bi1;//位图信息头结构 bi.biSize=sizeof(BITMAPINFOHEADER); bi.biWidth=bm.bmWidth; bi.biHeight=bm.bmHeight; bi.biPlanes=1; bi.biBitCount=wBitCount; bi.biCompression=BI_RGB;//BI_RGB表示位图没有压缩 bi.biSizeImage=0; bi.biXPelsPerMeter=0; bi.biYPelsPerMeter=0; bi.biClrUsed=0; bi.biClrImportant=0; bi1=bi; bi1.biBitCount=24; DWORDdwBmBitsSize=((bm.bmWidth*wBitCount+31)/32)*4*bm.bmHeight; HANDLEhDib=: : GlobalAlloc(GHND,dwBmBitsSize+dwPaletteSize+sizeof(BITMAPINFOHEADER));//为位图内容分配内存 LPBITMAPINFOHEADERlpbi=(LPBITMAPINFOHEADER)GlobalLock(hDib); *lpbi=bi; HANDLEhPal=: : GetStockObject(DEFAULT_PALETTE);//处理调色板 HANDLEhOldPal=NULL; if(hPal) {hDC=: : GetDC(NULL); hOldPal=SelectPalette(hDC,(HPALETTE)hPal,FALSE); RealizePalette(hDC);} intnOutputBytes=0; : : GetDIBits(hDC,hBitmap,0,(UINT)bm.bmHeight,(LPSTR)lpbi+sizeof(BITMAPINFOHEADER)+dwPaletteSize,(BITMAPINFO*)lpbi,DIB_RGB_COLORS);//获取该调色板下新的像素值 if(hOldPal)//恢复调色板 {SelectPalette(hDC,(HPALETTE)hOldPal,TRUE); RealizePalette(hDC); : : ReleaseDC(NULL,hDC);} BITMAPFILEHEADERbmfHdr;//位图文件头结构 bmfHdr.bfType=0x4D42;//"BM"//设置位图文件头 DWORDdwDIBSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+dwPaletteSize+dwBmBitsSize; bmfHdr.bfSize=dwDIBSize; bmfHdr.bfReserved1=0; bmfHdr.bfReserved2=0; bmfHdr.bfOffBits=(DWORD)sizeof(BITMAPFILEHEADER)+(DWORD)sizeof(BITMAPINFOHEADER)+dwPaletteSize; HANDLEhFile=CreateFile(strFileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_SEQUENTIAL_SCAN,NULL);//创建位图文件 DWORDdwWritten; WriteFile(hFile,(LPSTR)&bmfHdr,sizeof(BITMAPFILEHEADER),&dwWritten,NULL);//写入位图文件头 WriteFile(hFile,(LPSTR)lpbi,dwDIBSize,&dwWritten,NULL);//写入位图文件其余内容 GlobalUnlock(hDib);//清除 GlobalFree(hDib); CloseHandle(hFile);} voidCSreenClientDlg: : initDrawSreen()//初始化屏幕 {m_width=m_pBIH->biWidth; m_height=m_pBIH->biHeight; scrylm=m_height-cheight; if(scrylm<0) scrylm=0; scrxlm=m_width-cwidth; if(scrxlm<0) scrxlm=0; AfxMessageBox(_T("initDrawSreen")); m_vbar.SetScrollRange(0,scrylm,FALSE);//0制定最小滚动的位置scrylm制定最大滚动的位置TRUE m_vbar.SetScrollPos(scry,TRUE); m_hbar.SetScrollRange(0,scrxlm,TRUE); m_hbar.SetScrollPos(scrx,TRUE); UpdateData(FALSE); capflag=1; drawSreen();} voidCSreenClientDlg: : OnVScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar) {//TODO: Addyourmessagehandlercodehereand/orcalldefault intnPos1=m_vbar.GetScrollPos(); if(nSBCode==SB_LINEDOWN) {scry=scry+10; if(scry>scrylm) scry=scrylm; nPos1=scry; drawSreen();} if(nSBCode==SB_LINEUP) {scry=scry-10; if(scry<0) scry=0; nPos1=scry; drawSreen();} if(nSBCode==SB_THUMBTRACK) {scry=nPos; nPos1=nPos; if(nPo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 局域网 软件 运行 监控 系统 源程序 vc