局域网监控系统毕业论文

上传人:仙*** 文档编号:146626869 上传时间:2022-08-31 格式:DOC 页数:18 大小:104.52KB
收藏 版权申诉 举报 下载
局域网监控系统毕业论文_第1页
第1页 / 共18页
局域网监控系统毕业论文_第2页
第2页 / 共18页
局域网监控系统毕业论文_第3页
第3页 / 共18页
资源描述:

《局域网监控系统毕业论文》由会员分享,可在线阅读,更多相关《局域网监控系统毕业论文(18页珍藏版)》请在装配图网上搜索。

1、局域网监控系统摘 要 Internet 在我国刚刚起步时, 上网人群主要是从事 IT 技术的专业人员,年龄段多是中年人,但是随着 Internet 技术的快速发展,我国的上网人群年龄逐年增多,不仅 包括中年人,青少年及老年人在上网人群的比重不断增 加。Internet 上丰富的资源给人们带来了很多的方便,但 是也存在许多不良的信息危害青少年的健康,一些家长 担心青少年上网会影响其学习。局域网监控系统能够将 局域网中的某一台计算机的屏幕信息发送到服务器端, 家长可以随时了解青少年浏览的网页信息,对青少年上 网起到监督作用。 本文首先介绍了问题的背景,接着提出问题,并针 对具体项目展开需求调查分析

2、;再基于需求设计出具体 的方案;然后对整个系统进行了详细的分析和设计,在 设计与实现过程中,结合源代码具体的描述出整个项目 的开发过程;最后对整个系统进行测试得出测试结论。 关键字:屏幕监控;数据过滤。Abstract The Internet in China has just started, IT is mainly engaged in the Internet population technology professionals, the age is more middle-aged, but with the rapid development of Internet tech

3、nology, online population increased year by year, not only include age, teenagers and the elderly in middle-aged people increase the proportion of Internet. Abundant natural resources in the Internet has brought people a lot of convenience, but there are also many bad information of health hazards,

4、some parents teenagers about teenagers will affect the Internet learning. LAN monitoring system can be a computer network of the screen messages to the server, parents can understand teenagers web page for teenagers online information, play supervision. This paper firstly introduces the background,

5、and then put forward questions, and in the light of specific project on demand survey analysis, Based on the specific requirements to design the plan, Then the whole system to carry on the detailed analysis and design, design and implementation process, combined with a specific description of the so

6、urce of the development process of project, Finally to the whole system test that test conclusions. words: Key words: Monitor screen Data filtering第一章 绪论 . 8 1.1 问题背景. 81.2 研究范围及技术要求 . 8 1.2.1 研究范围. 81.2.2 技术要求.8第二章 系统设计 . 10 2.1 需求分析. 10 2.2 系统目标. 102.3 系统功能结构. 10 2.3 系统预览. 11 2.4 业务流程图. 13 2.5 程序运

7、行环境. 14 2.5 数据库设计. 14 第三章 客户端设计 . 15 3.1 客户端模块概述 . 15 3.2 客户端技术分析 . 153.3 客户端实现过程 . 16第四章 公共类设计 . 20 第五章 系统登录模块设计. 20 5.1 系统登录模块概述 . 20 5.2 系统登录模块技术分析 . 21 5.3 系统登录模块实现过程 . 21 第六章 主窗体设计 . 24 6.1 主窗体概述. 24 6.2 主窗体的实现过程 . 24第七章 操作员管理模块设计. 28 7.1 操作员模块概述 . 28 7.2 操作员模块技术分析 . 29 7.3 操作员模块实现过程 . 29 第八章 系

8、统设置模块设计. 36 8.1 系统设置模块概述 . 36 8.2 系统设置模块实现过程 . . 378.3 开发技巧与难点分析. 37 第九章 开发技巧与难点分析 9.1 及时关闭记录集 . 37 9.2 访问带密码的 Access 数据库. 38 9.3 防止 SQL 注入攻击 . 38 9.4 ON_COMMAND_RANGE 宏的注意事项 . 39 9.5 收获与体会. 39致谢 . 39 参考文献 . 40 第一章 绪论 1.1 问题背景 上网人群主要是从事 IT Internet 在我国刚刚起步时, 技术的专业人员,年龄段多是中年人,但是随着 Internet 技术的快速发展,我国

9、的上网人群年龄逐年增多,不仅 包括中年人,青少年及老年人在上网人群的比重不断增 加。Internet 上丰富的资源给人们带来了很多的方便,但 是也存在许多不良的信息危害青少年的健康,一些家长 担心青少年上网会影响其学习。局域网监控系统能够将 局域网中的某一台计算机的屏幕信息发送到服务器端, 家长可以随时了解青少年浏览的网页信息,对青少年上 网起到监督作用。 1.2 研究范围及技术要求 1.2.1 研究范围 1. 设计该系统的功能模块划分,使用 Acesss 2003 设计出 该系统的数据库。 2. 参考实际局域网监控系统,完成对系统的需求分析及设 计文档。 3. 根据需求分析及设计文档完成代码

10、编制。 1.2.2 技术要求 1. 功能模块划分合理。 2. 数据库设计满足功能要求。 3. 采用 UDP 协议进行数据传输。 4. 对客户端的数据进行过滤。 5. 建立数据库访问接口类,实现对数据库的访问。 6. 实时抓取客户端的屏幕信息。 第二章 系统设计 2.1 需求分析 局域网监控系统主要是对计算机屏幕信息进行实时监控。 因此局域网监控系统需要实现 屏幕信息的时时发送和接受。由于屏幕信息需要时时显示,因此信息的传输速度要快,屏幕 信息要时时发送。为此,选择 UDP 协议进行传输。为了防止服务器端随意的接收客户端发 来的数据报,服务器端需要对发来的数据报进行过滤,只有是制定的客户端才接收

11、数据。 2.2 系统目标本系统属于小型的局域网监控系统,可以对某一台计算机进行屏幕监控。本系统主要 实现一下目标: 1. 系统采用人机交互的方式,界面美观友好。 2. 屏幕信息需要时时显示,网络延时不能大于 1 秒。 3. 服务器端可以随时运行,只要客户端运行,就能够显示屏幕信息。 4. 系统运行时占用内存不能大于 10MB,以免影响系统的性能。 5. 客户端运行时需要隐藏显示窗口,其感觉不到在运行。 2.3 系统功能结构 局域网监控系统功能结构图如下所示。 局域网监控系统 客户端 服务器端 主 主 窗 窗 体 体 系 统 登 录 操 作 员 管 理 系 统 设 置 2.3 系统预览 局域网监

12、控系统分为客户端和服务器端两部分,其中客户端运行时将窗体隐身,服务 器端主要有四个窗体组成, 分别为主窗体、 操作员管理窗体、 系统登录窗体、 系统设置窗体。 其中, 主窗体用于接收并显示屏幕信息。 操作员管理窗体用于添加、 修改、 删除操作员信息, 系统登录窗体用于系统在启动时验证用户身份。系统设置窗体用于设置客户端 IP。 主 窗 体 系统登录窗体 操作员管理窗体 系统设置窗体 2.4 业务流程图 系 统 登 录 登录成功是 系统 2.5 程序运行环境本系统对运行环境有一定的要求,具体如下: 1、 系统开发平台:Microsoft VC 6.0. 2、 系统开发语言:C+ 3、 数据库软件

13、系统软件:Microsoft Acess 2003 4、 运行平台:Windows XP 5、 分辨率:最佳效果 1024*1280 像素 2.5 数据库设计 1、 数据库分析 在开发局域网监控系统时,使用数据库主要用于记录操作员信息及客户端信息,系统 设计的数据量比较小,因此本系统采用的 Microsoft Access2003 作为后台数据库,数据 库名字为 db_Video,其中包含了 2 张表 2、 数据库概念设计 数据库概念设计是根据各个模块的需求“抽象”出数据实体的过程,也就是宏观上 用文字、图表描述数据表的过程。 为了增加系统的安全性,服务器端设置了登录窗口,在系统启动时弹出该窗

14、口,要 求用户输入操作员名称和密码。其中用户的操作员名称和密码信息存储在数据表中。 这样在系统登录模块就需要一个操作员信息实体。 为了过滤服务器端接受的数据报,时期值接收制定客户端发来的数据,需要存储客 户端 IP,为此,需要单独设计一个客户端信息实体对象。 操作员信息表 客户端信息表 操作员姓 名 操作员密 码 客户端 IP 地址第三章 客户端设计 3.1 客户端模块概述 局域网监控系统分为客户端和服务器端两大模块,其中,客户端的主要作用是时时抓 取本机的屏幕信息,将其分成多个数据报,发送到服务器端。为了保证屏幕信息能够完整的 发送到服务器,客户端在发送一个数据报后,需要等待服务器端发来的确

15、认信息,然后继续 发送下一个数据报。 3.2 客户端技术分析客户端要实现屏幕信息的发送,要解决两个关键问题:一是获取屏幕信息,将其转换为位图 格式;二是将位图信息发送到服务器。 一、将屏幕信息转换为位图格式 CDC* pDeskDC = GetDesktopWindow()-GetDC(); /获取桌面画布对象 CRect rc; GetDesktopWindow()-GetClientRect(rc); /获取屏幕的客户区域 int width = 300; /获取屏幕的宽度 int height = 300; /获取屏幕的高度 CDC memDC; /定义一个内存画布 memDC.Crea

16、teCompatibleDC(pDeskDC); /创建一个兼容的画布 CBitmap bmp; bmp.CreateCompatibleBitmap(pDeskDC,width,height); /创建兼容位图 memDC.SelectObject(&bmp); /选中位图对象 BITMAP bitmap; /定义位图信息 bmp.GetBitmap(&bitmap); /获取位图信息 memDC.BitBlt(0,0,width,height,pDeskDC,m_X,m_Y,SRCCOPY);/将屏幕信息输出到位图 二、根据位图对象获取位图信息 一个位图文件通常有“位图文件头”“位图信息头

17、”“调色板”和“实际位图数据”4 、 、 个部分组成。其中“位图文件头” 包含 BMP 图像文件的类型、显示内容、位图标 记、位图大小等信息,在程序中使用 BITMAPFILEHEADER 结构来表示。 “位图 信息头”和“调色板”2 个部分描述了位图的宽度、高度、是否压缩、位图颜色 等信息,在程序中使用 BITMAPINFO 结构描述。由于程序发送的位图不是以文 件形式发送的,只需要发送位图位图信息头、调色板和实际数据就可以了,因此 不需要位图文件头。 int panelsize = 0; /记录调色板大小 if (bitmap.bmBitsPixelbmiHeader.biBitCount

18、 = bitmap.bmBitsPixel;/设置位图颜色用到的位 数 pBInfo-bmiHeader.biClrImportant = 0;/指定显示位图颜色的种类,如果值为 0,所有的颜色种类都需要 pBInfo-bmiHeader.biCompression = 0;/指定位图的压缩类型- “该语句=0” 说明改为图不进行压缩 pBInfo-bmiHeader.biHeight = height;/指定位图的高度 pBInfo-bmiHeader.biPlanes = bitmap.bmPlanes;/为目标设备指定调 色板的数量,且该值只能是 1 pBInfo-bmiHeader.b

19、iSize = sizeof(BITMAPINFO);/ 设 置 BITMAPINFO 结构大小 pBInfo-bmiHeader.biSizeImage = = bitmap.bmWidthBytes*bitmap.bmHeight;/设置图像的大小 pBInfo-bmiHeader.biWidth = width;/指定位图的宽度 pBInfo-bmiHeader.biXPelsPerMeter = 0;/目标设备的水平分辨率 pBInfo-bmiHeader.biYPelsPerMeter = 0;/目标设备的垂直分辨率 m_X = m_RecX; m_Y = m_RecY; 三、将位图

20、信息发送到服务器 因为将图片信息传送到服务器端要求的实时性比较强, 所以采用 UDP 协议将位图 信息发送到服务器 3.3 客户端实现过程 1、 创建一个基于对话框的工程,名称为 Client。 、 创建一个基于对话框的工程, 。 2、 在 Stafx.h 文件中引入套接字库。 文件中引入套接字库。 、 3、 在应用程序类的 Instance 函数中初始化套接字 、 WSADATA data; WSAStartup(2,&data); 4、 改写应用程序类的虚方法 ExitInstance 、 int CClientApp:ExitInstance() WSACleanup(); /清理套接字

21、资源 return CWinApp:ExitInstance(); 5、 在对话框类中添加如下成员变量 、 SOCKET m_Socket;/客户端套接字 CString m_ServerIP;/服务器 IP int m_X,m_Y;/抓起屏幕的起始坐标 WORD m_RecX,m_RecY;/收到服务器发来的抓起屏幕的起始坐标 BOOL m_Confirm;/确认信息 int m_FrameIndex;/记录索引 int count;/每一个位图分报的数量 int bmpsize;/位图的实际大小 int mod;/记录余数 char *pSendBuf;/发送缓冲区指针 char *Hea

22、d;/临时指针 sockaddr_in addrl;/套接字地址 BOOL m_Received;/是否受到服务器发来的确认信息 int m_Counter;/计数器 6、在对话框的初始化函数中,创建套接字将其绑定到指定位置,并初始化相应的成员变量 在对话框的初始化函数中, 在对话框的初始化函数中 创建套接字将其绑定到指定位置, BOOL CClientDlg:OnInitDialog() hostent *phost=gethostbyname(); char *localIP=inet_ntoa(*(struct in_addr*)*phost-h_addr_list); sockaddr

23、_in addr; addr.sin_family=AF_INET; addr.sin_addr.S_un.S_addr=inet_addr(localIP); addr.sin_port=htons(5001); m_Socket=socket(AF_INET,SOCK_DGRAM,0); if(m_Socket=INVALID_SOCKET) MessageBox(套接字创建失败!); if(bind(m_Socket,(sockaddr*)&addr,sizeof(addr)=SOCKET_ERROR) MessageBox(绑定套接字失败!); m_ServerIP=127.0.0.1

24、; GetPrivateProfileString(ServerInfo,IP,127.0.0.1,m_ServerIP.GetBuffer(0),MAX_PATH ,./server.ini);/读取 INI 配置文件 WSAAsyncSelect(m_Socket,m_hWnd,CM_RECEIVED,FD_READ);/该 函 数 的 功 能 是 在 套接字 m_Socket 上,看是否有读取事件发生如果有,向窗口句柄为 m_hWnd 的窗口发送 CM_RECEIVED 消息 m_X=m_Y=0; m_RecX=m_RecY=0; m_Confirm=true; pSendBuf=new

25、 char1024*1024*2; Head=pSendBuf; Onok(); m_Received=false; m_Counter=0; SetTimer(1,1000,NULL); return TRUE; / return TRUE unless you set the focus to a control 7、 自定义一个消息,当套接字接到数据时,将该消息发送到主窗口 、 自定义一个消息,当套接字接到数据时, #define GraphSize 1024 #define CM_RECEIVED WM_USER+200 /自定的消息 CM_RECEIVED 8、 添加 OnRecei

26、ved()方法,该方法的作用是:接收服务器端发来的确认信息和控制信 ()方法 、 ()方法,该方法的作用是: 息 void CClientDlg:OnReceived() char *pData=new char1024; memset(pData,0,1024); sockaddr_in addr; int factsize=sizeof(sockaddr); int ret=recvfrom(m_Socket,pData,1024,0,(sockaddr*)&addr,&factsize); if(ret!=-1) /判断是否接收成功 if(ret=4) /方向指令 m_RecX=*(WO

27、RD*)&pData0; /填充屏幕 x 坐标 m_RecY=*(WORD*)&pData2; /填充屏幕 y 坐标 if(ret=8) /确认指令 m_Received=TRUE; m_FrameIndex+=1; /将发送的数据报的序号加 1 if(m_FrameIndex5) m_Counter=0; Onok(); else /当接收到服务器发来的数据 m_Received=FALSE; m_Counter=0; CDialog:OnTimer(nIDEvent); 12、 方法,将屏幕信息转化为位图信息,划分数据报的格式, 、 添加一个 Onok 方法,将屏幕信息转化为位图信息,划分

28、数据报的格式,计算每个 位图信息需要发送数据报的次数 信息需要发送数据报的次数, 方法。 位图信息需要发送数据报的次数,调用 SendData 方法。 13、 ShowWindow(SW_HIDE); 将 对 话 框 隐 、 在对话框类中的 OnPaint 函数中添加 藏。第四章 公共类设计 公共类设计在局域网监控系统的服务器端需要对数据库进行操作。为了方便管理,将有关数据库的 操作封装为一个类 CDataManage。该类中包含 ADOConnection 对象、ADOCommand 对象和 ADORecordset 对象, 被提供 InitDatabase 方法用于构造 ADO 对象、 连

29、接数据库。 CDataManage 类的具体实现过程如下: 1、 在 visual C+工程中的 Stdafx.h 头文件中导入 msado15.dll 动态库。 #import C:Program FilesCommon FilesSystemadomsado15.dll no_namespacerename(EOF,ADOEof) 2、 创建一个普通类,命名为 CDataManage,在该类中添加如下成员变量。 _ConnectionPtr m_pConnection; _CommandPtr m_pCommand; _RecordsetPtr m_pRecord; 3、 向 CDataM

30、anage 类中添加 InitDatabase 方法构造 ADO 对象,并连接数据库。 BOOL CDataManage:InitDatebase() HRESULT hr; try hr = m_pConnection.CreateInstance(ADODB.Connection);/创建 Connection 对象 m_pCommand.CreateInstance(ADODB.Command); m_pRecord.CreateInstance(ADODB.Recordset); if(SUCCEEDED(hr) hr = m_pConnection-Open(Provider=Mic

31、rosoft.Jet.OLEDB.4.0;Data Source=db_Video.mdb,adModeUnknown);/连接数据库 /上面一句中连接字串中的 Provider 是针对 ACCESS2000 环境的,对于 ACCESS97,需 要改为:Provider=Microsoft.Jet.OLEDB.3.51; catch(_com_error e)/捕捉异常 CString errormessage; errormessage.Format(连接数据库失败!rn 错误信息:%s,e.ErrorMessage(); AfxMessageBox(errormessage);/显示错误信

32、息 return FALSE; return true; 第五章 系统登录模块设计5.1 系统登录模块概述为了防止非法用户使用系统, 在局域网监控系统的服务器端提供了系统登录莫块。 在 系统启动时,只有输入正确的用户名和密码才能进入主界面。 5.2 系统登录模块技术分析为了验证用户输入的用户名和密码是否正确,需要根据用户输入的用户名和密码从数据 库中查询用户信息,如果有信息返回,表明用户名和密码正确;否则不正确。程序中使用了 ADOCommand 对 象 执 行 查 询 操 作 。 在 使 用 ADOCommand 对 象 时 , 首 先 需 要 设 置 ActiveConnection 属性

33、, 该属性关联一个 ADOCommand 对象, 然后设置 CommandText 属性, 该属性表示 ADOCommand 对象要执行的 SQL 语句。如果 SQl 语句中有参数,还需要调用 Parameters 属性的 Append 方法插入参数, 最后调用 ADOCommand 对象的 execute 方法执行 SQL 语句。代码如下: _ParameterPtr pUser,pPassword; CServerApp *pAPP=(CServerApp*)AfxGetApp(); pUser=pAPP-m_DataManage.m_pCommand-CreateParameter(us

34、er,adVarWChar,adParamIn put, 100,(_bstr_t)user); pPassword=pAPP-m_DataManage.m_pCommand-CreateParameter(password,adVarWChar,a dParamInput, 100,(_bstr_t)password); pAPP-m_DataManage.m_pConnection-CursorLocation=adUseServer; pAPP-m_DataManage.m_pCommand-ActiveConnection=pAPP-m_DataManage.m_pCo nnectio

35、n; pAPP-m_DataManage.m_pCommand-Parameters-Append(pUser); pAPP-m_DataManage.m_pCommand-Parameters-Append(pPassword); /CString sql=select *from tb_userInfo where UserName=+user+ and PassWord=+password+; pAPP-m_DataManage.m_pCommand-CommandText= select *from tb_userInfo where UserName=user and PassWor

36、d=password;/ _RecordsetPtr pRecord=NULL; pRecord=pAPP-m_DataManage.m_pCommand-Execute(0,NULL,adCmdText); pAPP-m_DataManage.m_pCommand-Parameters-Delete(user); pAPP-m_DataManage.m_pCommand-Parameters-Delete(password); 5.3 系统登录模块实现过程 1、 创建一个对话框,如下图: 2、 修改对话框类的 PreTranslateMessage 虚方法,当编辑框获得焦点时,按 Enter

37、 键控制焦 点移动。 BOOL CLoginDlg:PreTranslateMessage(MSG* pMsg) if (pMsg-message=WM_KEYDOWN & pMsg-wParam=VK_RETURN ) CString str; /获取类名 GetClassName(pMsg-hwnd,str.GetBuffer(0),MAX_PATH); if (str=Edit) pMsg-wParam = VK_TAB ; return CDialog:PreTranslateMessage(pMsg); 3、 处理“登录”按钮的单击事件,验证用户名和密码是否正确。如果用户名和密码正确

38、, 关闭对话框并返回 IDOK。 void CLoginDlg:OnLogin() / TODO: Add your control notification handler code here CString user,password; m_Username.GetWindowText(user); m_Password.GetWindowText(password); if(user.IsEmpty()|password.IsEmpty() MessageBox(用户或密码不能为空!); m_Username.SetFocus(); else _ParameterPtr pUser,pP

39、assword; CServerApp *pAPP=(CServerApp*)AfxGetApp(); pUser=pAPP-m_DataManage.m_pCommand-CreateParameter(user,adVarWChar,adPara mInput, 100,(_bstr_t)user); pPassword=pAPP-m_DataManage.m_pCommand-CreateParameter(password,adVarWC har,adParamInput, 100,(_bstr_t)password); pAPP-m_DataManage.m_pConnection-

40、CursorLocation=adUseServer; pAPP-m_DataManage.m_pCommand-ActiveConnection=pAPP-m_DataManage.m_pCo nnection; pAPP-m_DataManage.m_pCommand-Parameters-Append(pUser); pAPP-m_DataManage.m_pCommand-Parameters-Append(pPassword); /CString sql=select *from tb_userInfo where UserName=+user+ and PassWord=+pass

41、word+; pAPP-m_DataManage.m_pCommand-CommandText= select *from tb_userInfo where UserName=user and PassWord=password;/ 需要解释 _RecordsetPtr pRecord=NULL; pRecord=pAPP-m_DataManage.m_pCommand-Execute(0,NULL,adCmdText); pAPP-m_DataManage.m_pCommand-Parameters-Delete(user); pAPP-m_DataManage.m_pCommand-Pa

42、rameters-Delete(password); if(pRecord!=NULL) try CString str=(char*)(_bstr_t)pRecord-GetFields()-GetItem(UserName)-Value; /MessageBox(str); pRecord-Close(); catch(.) MessageBox(用户名或密码不正确!); /m_Username.GetFocus();出错的一个地方 m_Username.SetFocus(); pRecord -Close(); return ; EndDialog(IDOK); else Message

43、Box(用户名或密码不正确); /m_Username.GetFocus();出错的一个地方 m_Username.SetFocus(); pRecord -Close(); void CLoginDlg:OnCancel() / TODO: Add extra cleanup here CDialog:OnCancel(); 第六章 主窗体设计6.1 主窗体概述 局域网监控系统服务器端主窗体主要显示客户端发来的位图信息, 并且控制客户端抓 图的起始坐标。 6.2 主窗体的实现过程 1、 向对话框类中添加如下成员变量。 SOCKET m_Socket; char *m_BmpData; cha

44、r *m_TempData; char *Head; BOOL m_ShowBmp; int m_BmpSize; int m_RecSize; CString m_ClientIP; UINT m_ClientPort; WORD m_LeftTopX; WORD m_LeftTopY; 2、 自定义一个消息,用于自套接字有数据时发送到主窗口中。 #define CM_RECEIVED WM_USER+1001 3、 想对话框中添加 ShowImage 方法,显示位图数据。 void CServerDlg:ShowImage() if(m_ShowBmp) BITMAPINFO bInfo;

45、 memcpy(&bInfo,m_TempData,sizeof(bInfo); int x=bInfo.bmiHeader.biWidth; int y=bInfo.bmiHeader.biHeight; StretchDIBits(m_BK.GetDC()-m_hDC,0,0,x,y,0,0,x,y,&m_TempDatasizeof(BITMAPINF O), &bInfo,DIB_RGB_COLORS,SRCCOPY); 4、 向对话框中添加 OnReceived 方法,用于接收客户端发来的数据。在数据接收后,向客 户端发送确认信息。 void CServerDlg:OnReceive

46、d() char *buffer=new charMAX_BUFF; sockaddr_in addr; int factsize=sizeof(addr); int ret=recvfrom(m_Socket,buffer,1050,0,(sockaddr*)&addr,&factsize); if(ret!=-1) CString recIP=inet_ntoa(addr.sin_addr); /MessageBox(recIP); if(recIP!=m_ClientIP) /MessageBox(m_ClientIP); delete buffer; return; m_ClientPort=ntohs(addr.sin_port); m_RecSize+=ret; WORD orderID=*(WORD*)&buffer0; WORD endID=*(WORD*)&buffer2; int bmpsize=*(int *)&bufferret-12; m_LeftTopX=*(WORD*)&bufferret-8; m_LeftTopY=*(WORD*)&bufferret-6; sockaddr_in addr1; addr1.sin_addr.S_un.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!