局域网软件运行监控系统源程序vc++.docx

上传人:b****8 文档编号:10869547 上传时间:2023-02-23 格式:DOCX 页数:19 大小:20.38KB
下载 相关 举报
局域网软件运行监控系统源程序vc++.docx_第1页
第1页 / 共19页
局域网软件运行监控系统源程序vc++.docx_第2页
第2页 / 共19页
局域网软件运行监控系统源程序vc++.docx_第3页
第3页 / 共19页
局域网软件运行监控系统源程序vc++.docx_第4页
第4页 / 共19页
局域网软件运行监控系统源程序vc++.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

局域网软件运行监控系统源程序vc++.docx

《局域网软件运行监控系统源程序vc++.docx》由会员分享,可在线阅读,更多相关《局域网软件运行监控系统源程序vc++.docx(19页珍藏版)》请在冰豆网上搜索。

局域网软件运行监控系统源程序vc++.docx

局域网软件运行监控系统源程序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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1