局域网内主机监控系统

目录

  1. 引言 2
    1.1 编写目的 2
    1.2 项目背景 2
    1.3 课题内容和要求 3
    1.4 名词解释 4
    参考文献 4
  2. 需求分析 5
    2.1 现有系统概述 5
    2.2 对新系统的要求 5
    2.3 系统要求 6
    2.4 对功能的规定 6
    2.5 对性能的规定 6
    2.6 运行环境规定 7
    2.6.2 软件配置 7
  3. 系统架构 7
    3.1 系统拓扑结构 7
    3.2 系统工作过程 8
    3.3 系统框架 9
  4. 系统概要设计 10
    4.1 系统概貌 10
    4.2 主要功能模块描述 11
    4.3 基本设计概念和处理流程 12
    4.4 系统活动流程描述 12
    4.4 主要模块概要设计 13
    4.4.1 Socket 概要设计 14
    4.4.2 多线程概要设计 17
    4.5 图形界面设计 17
    4.6 系统出错处理设计 19
    4.3.2 补救措施 19
  5. 系统详细设计 19
    5.1 主要常量定义 20
    5.2 主要模块实现 20
    5.2.2 连接的建立与取消 21
    5.2.3 Socket 的设计与实现 22
    5.2.4 多线程的建立与实现 24
    5.4 图形界面设计及实现 24
    5.4.1 窗口类 CWnd 24
    5.4.2 下拉层叠式菜单的实现 25
    5.4.3 工具栏的实现 25
    5.4.4 状态栏的实现 27
  6. 系统的运行和测试 27
    6.1 运行环境说明 27
    6.2 运行和测试 28
    6.2.1 系统主界面展示 28
    6.2.2 连接菜单展示以及连接建立测试 29
    6.2.3 色彩选择测试 32
    6.2.4 图像压缩选择测试 34
    6.2.5 控制对方桌面测试 35
    6.2.6 “显示”菜单展示以及包含功能测试 37
    6.2.7 “帮助”菜单展示 40
    6.3 结论 41
  7. 调试过程中的问题 41
    7.1 Socket 创建失败 41
    7.2 内存溢出 42
    7.3 Socket 数据传输错误 42
    7.4 多线程弹出对话框错误 42
    7.5 位图显示错误 43
    7.6 子窗口建立崩溃 44
    7.7 未解决的问题: 44
  8. 课程设计总结 45
    8.1 总结 45
    8.2 展望 46
    致 谢 46
    附 录 47
    Ⅰ 参考书目和网页 47
    Ⅱ ReadMe 文件展示 47
    2.需求分析

2.1现有系统概述
在此次开发之前,我们拥有一个原型系统,仅可实现远程监控功能,无图形界面。这会给用户带来几个问题:①只监控会不方便用户使用,无法实现控制功能也未满足远程控制系统的需求;②监控是通过将对方电脑屏幕截屏然后进行图像传输实现的,图像不进行压缩导致传输过程慢、卡顿明显,用户体验不佳;③ 原先并没有考虑用户实际的机器性能问题,全部以 256 色图像传输,这在用户机器性能不佳的情况下更加重了传输复旦;④一次只能监控一个电脑,但这并不符合实际的用户需求,我们的目标客户为企业的管理者,需要一次监控多台电脑以达到高校的办公需求;⑤无信息发送与文件传输功能,这导致监控端与被监控端交互困难,不利于提高企业工作效率;⑥无图形界面设计,给用户使用带来不便。因此现有系统将针对以上几点,采用“原型法”的开发方法进行改善。
2.2对新系统的要求
根据 2.1 节对现有系统的描述,我们可以清晰的知道现有系统目前的缺陷。因此我们针对以上缺陷,采用“原型法”的开发方法对新系统增加如下功能:① 实现远程控制功能,包括被监控端的鼠标、键盘以及外部设备接口等;②采用不同的压缩算法,供用户根据实际情况选择;③提供 1、4、8、24 位色彩显示方案, 供用户根据实际情况以及个人喜好选择;④可同时监控、控制多台电脑;⑤增加消息传输、命令传输以及文件传输功能;⑥增加友好的图形界面,改善客户体验、方便客户使用。

2.3系统要求
使用远程控制软件进行远程控制,首先要使客户端和服务器端都处在网络中, 网络可以是局域网。其次要使被控端和控制端都处在同一种通信协议之下,一般TCP/IP 协议是多数远程控制软件首选的通讯协议。通过远程控制软件控制的双方电脑需要拥有合法的 IP 地址,而且客户端必须要明确知道服务器端的 IP 地址。为企业设计一个远程控制系统需要满足以下条件:
稳定性:监控系统在企业现代化的管理过程中占据了重要的地位,需要具有一定的稳定性以实现便捷的管理;
易维护性:一个系统的易维护性是系统的一项非常重要的指标,因此系统应易维护以降低企业的运营成本;
安全性:企业的信息数据属于企业机密,因此安全、保密工作是必须第一位考虑。然而数据在网络中传输的过程,因此为防止信息被窃听或截获,必须将数据加密。
易操作性:见解美观易操作的界面对提高企业员工的工作效率至关重要。
2.4对功能的规定
本系统主要实现的功能有:
监控、控制多台主机的桌面;
实现远程控制功能,包括被监控端的鼠标、键盘以及外部设备接口等;
提供 1、4、8、24 位色彩显示方案,供用户根据实际情况以及个人喜好选择;
采用不同的压缩算法实现对图像的压缩,供用户根据实际情况选择;
消息传输、命令传输以及文件传输功能,实现监控端与被监控端的交互;
图形界面开发,改善客户体验、提高工作效率。
2.5对性能的规定
用户界面需要简单,友好,方便操作。为了保证主控端对被控端的可靠控制, 主控端和被控端采用有连接的 TCP 协议连接。本文转载自http://www.biyezuopin.vip/onews.asp?id=15028为了到达快速有效地控制被控端, 主控端发送给被控端的命令包含的字节数应该尽量的少。其次被控端要正确的解析被控端发送的命令同时也要快速发回主控端需要的信息。

2.6运行环境规定
2.6.1硬件配置
CPU:2.40GHz
USB:可用
2.6.2软件配置
操作系统:Windows7 标准版或以上版本 64 位操作系统
开发工具:Visual C++ 6.0
开发框架:Microsoft Foundation Classes

3.系统架构

在本软件设计中,采用典型的 C/S 结构,由客户端与服务端两部分构成。非对等作用是客户/服务器模式的最显著的特点,即不平等地位的体现是客户相对于服务器的集中体现,服务端提供服务,客户端提供请求。

//Base64编码解码
/*
功能:将任意字节转为可读字符,在HTTP环境下传递较长的标识信;
处理过程:以3个字节为一组(24位),每6位扩展成8位得到4个字节(32位)
*/
#include "stdafx.h"
#include "Base64.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endifCString CBase64::m_sBase64Alphabet =
_T( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" );//密文显示int CBase64::m_nMask[] = { 0, 1, 3, 7, 15, 31, 63, 127, 255 };//子网掩码?CBase64::CBase64()
{
}CBase64::~CBase64()
{
}CString CBase64::Encode(LPCTSTR szEncoding, int nSize)//编码(要编码的字符串指针,要编码字符串长度)
{CString sOutput = _T( "" );int nNumBits = 6;//每6位编码UINT nDigit;int lp = 0;ASSERT( szEncoding != NULL );if( szEncoding == NULL )return sOutput;m_szInput = szEncoding;m_nInputSize = nSize;m_nBitsRemaining = 0;nDigit = read_bits( nNumBits, &nNumBits, lp );while( nNumBits > 0 ){sOutput += m_sBase64Alphabet[ (int)nDigit ];nDigit = read_bits( nNumBits, &nNumBits, lp );}// Pad with '=' as per RFC 1521while( sOutput.GetLength() % 4 != 0 ){sOutput += '=';//用=填充}return sOutput;
}//解码:要求编码字串长度的4/3,否则让他们同长
int CBase64::Decode(LPCTSTR szDecoding, LPTSTR szOutput)
{CString sInput;int c, lp =0;int nDigit;int nDecode[ 256 ];ASSERT( szDecoding != NULL );ASSERT( szOutput != NULL );if( szOutput == NULL )return 0;if( szDecoding == NULL )return 0;sInput = szDecoding;if( sInput.GetLength() == 0 )return 0;// Build Decode Table//for( int i = 0; i < 256; i++ )nDecode[i] = -2; // Illegal digitfor( i=0; i < 64; i++ ){nDecode[ m_sBase64Alphabet[ i ] ] = i;nDecode[ m_sBase64Alphabet[ i ] | 0x80 ] = i; //忽略第8个比特nDecode[ '=' ] = -1;nDecode[ '=' | 0x80 ] = -1; // 忽略MIME填充字符}// 清除输出缓冲区memset( szOutput, 0, sInput.GetLength() + 1 );// 编码for( lp = 0, i = 0; lp < sInput.GetLength(); lp++ ){c = sInput[ lp ];nDigit = nDecode[ c & 0x7F ];if( nDigit < -1 ){return 0;}else if( nDigit >= 0 )//递增排序iwrite_bits( nDigit & 0x3F, 6, szOutput, i );}return i;
}UINT CBase64::read_bits(int nNumBits, int * pBitsRead, int& lp)
{ULONG lScratch;while( ( m_nBitsRemaining < nNumBits ) &&( lp < m_nInputSize ) ){int c = m_szInput[ lp++ ];m_lBitStorage <<= 8;m_lBitStorage |= (c & 0xff);m_nBitsRemaining += 8;}if( m_nBitsRemaining < nNumBits ){lScratch = m_lBitStorage << ( nNumBits - m_nBitsRemaining );*pBitsRead = m_nBitsRemaining;m_nBitsRemaining = 0;}else{lScratch = m_lBitStorage >> ( m_nBitsRemaining - nNumBits );*pBitsRead = nNumBits;m_nBitsRemaining -= nNumBits;}return (UINT)lScratch & m_nMask[nNumBits];
}void CBase64::write_bits(UINT nBits,int nNumBits,LPTSTR szOutput,int& i)
{UINT nScratch;m_lBitStorage = (m_lBitStorage << nNumBits) | nBits;m_nBitsRemaining += nNumBits;while( m_nBitsRemaining > 7 ){nScratch = m_lBitStorage >> (m_nBitsRemaining - 8);szOutput[ i++ ] = nScratch & 0xFF;m_nBitsRemaining -= 8;}
}




































基于VC++的局域网内主机监控系统设计与实现相关推荐

  1. 音视频开发(11)---基于B/S模式的视频监控系统设计

    基于B/S模式的视频监控系统设计 http://hi.baidu.com/huqing7002/item/3f89f7109f22bee45f53b110 随着计算机和网络技术的迅猛发展,闭路电视监控 ...

  2. 用机顶盒或网络电视机实现监控摄像头预览,完成简单的录相机功能,用机顶盒远程观看摄像头,多个监控可以同时观看,实时观看,也可以用机顶盒或网络电视观看局域网内的监控画面

    用机顶盒或网络电视机实现监控摄像头预览,完成简单的录相机功能,用机顶盒远程观看摄像头,多个监控可以同时观看,实时观看,也可以用机顶盒或网络电视观看局域网内的监控画面 准备: 1.需要知道 监控摄像头的 ...

  3. 项目实战:基于 TCP 的局域网内高性能文件传输系统设计与实现

    本项目开发基于 Red Hat Enterprise Linux(RHEL) 6.3 平台 ,通过本项目大家会深入理解下述内容: Socket 网络编程技术 基于TCP/IP 协议的网络编程技术 基于 ...

  4. 基于DirectShow的局域网内音视频流的多机共享

    1.  引言 在局域网内传输音.视频等多媒体数据主要有两种方案:下载和流式传送.下载的主要缺点是,必须等全部内容传输完毕,然后才能在本地机器打开:而采用流式传输方案,多媒体数据流可以连续.实时地向用户 ...

  5. java获取局域网内主机,java怎么获取局域网内所有主机ip

    java怎么获取局域网内所有主机ip 关注:53  答案:2  mip版 解决时间 2021-01-27 21:31 提问者夢岭杺 2021-01-27 12:02 java怎么获取局域网内所有主机i ...

  6. 访问不同局域网内主机

    最近有个需求,我在不同的局域网内,去访问另一个局域网中的一台 linux 服务器.总结一下,有哪些可选的方法. 在网上看到这篇博客很棒,值得去看看.https://blog.csdn.net/zbgj ...

  7. 基于SMBJ在局域网内读取共享文件

    近期在做公司项目时,有个工作站文件.数据采集的功能需求,文件会被存储在局域网内某台电脑的data/{yyyyMMdd}/...文件夹下,yyyyMMdd代表当天的日期,百度查了下,通常有两种方式可以实 ...

  8. 闸机安装linux系统,基于嵌入式Linux的闸机监控系统设计

    摘要: 闸机监控系统,因其具备安全防范和人员管理功能,而被广泛应用于工厂自动化.安全保卫.物流管理等行业.同时,随着射频身份识别(RFID)技术和嵌入式技术的广泛应用,将三者结合使用,必会极大地提高闸 ...

  9. 2021-08-03 在ubuntu 18.04上创建基于VNC的局域网内远程工作环境

    目录标题 1. 场景描述 2. 环境搭建概要 2.1 工作站 2.2 客户端 2.3 远程登陆 3. 问题说明 3.1 单用户支持 3.2 客户端显示不全 3.3 VNC vs. Teamviewer ...

最新文章

  1. BiLSTM+CRF的损失由发射矩阵和转移矩阵计算而得 BiLSTM+CRF命名实体识别:达观杯败走记(下篇
  2. Android FrameWork学习(二)Android系统源码调试
  3. “面试不败计划”:面试题基础三
  4. Serverless:这真的是未来吗?(二)
  5. 如何检查某个用户是否具有某个权限对象上定义的某种权限
  6. CodeForces - 976F Minimal k-covering
  7. streaming api_通过Spring Integration消费Twitter Streaming API
  8. 怎么让前端项目运行起来_如何立即使您的前端项目看起来更好
  9. 2018年Java展望
  10. 数值计算方法(三)——变步长梯形法与龙贝格算法
  11. retrofit框架学习(一)----基本用法
  12. 百度又要开放哪些无人车新能力?“老司机”Apollo3.5要来了,市中心开车无压力...
  13. [ZT]ASP.NET中如何防范SQL注入式攻击
  14. Java多线程编程实战(读书笔记)
  15. 矩阵分解——三角分解(Cholesky 分解)
  16. 网站banner图片制作(简易版)
  17. 资源管理器整理计算机中的文件,如何整理电脑文件夹?
  18. 一次应用访问数据库 IP 配成外网 IP 引发的血案
  19. hgetall php,HGETALL命令_视频讲解_用法示例-redis编程词典-php中文网
  20. Qt+Win10使用QAxWidget控件实现远程桌面控制

热门文章

  1. 罗技F710使用笔记
  2. python交互界面清屏_python交互模式怎么清屏
  3. C# 计算器窗体程序(简单版)
  4. x什么意思c语言新闻视频视频ok,c语言第x章函数重庆交大版.ppt
  5. 2019华为软挑代码总结-交通规则模拟
  6. DiskGenius常用功能介绍
  7. Linux创建空白文件,ubuntu添加右键新建文本文档
  8. QNAP 安装SVN服务器
  9. c语言中greater是什么意思,在c语言里||是什么意思
  10. 07UI交互a_TextMeshPro