优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

VB514 基于VB网络监管的内网监控软件

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

为提高内网使用效率,净化上机环境,杜绝个别用户使用内网内电脑做违规的事情,为内网管理员提供一个好的内网监控系统是必要的。本人在对内网微机管理过程进行了详细调查后,参考了一些网吧的微机管理系统,获得了内网监控系统的设计思路。内网管理系统应当能使管理员极其方便的获取某台微机的屏幕视图,锁定某台电脑的键盘和鼠标输入,并能发送消息给指定的电脑用户。
本论文从理论上分析了实现内网监控系统所需要的基础技术的原理,并以VC++6.0作为开发工具,在Win32平台下实现了一个内网监控系统。论文第二部分简述了TCP/IP协议以及Socket编程技术,第三部分讲述了系统的设计目标和通信协议,第四章则介绍了实现过程中使用的核心技术,包括屏幕截图、锁定屏幕以及服务器端和客户端的通信。通过本文的研究,为内网监控系统的设计和实现展示了一个完整的方案,具有一定参考价值。

think58 [资料来源:http://think58.com]

[资料来源:THINK58.com]


文章在第二章介绍了一些基本的技术原理,涉及到TCP/IP协议、Socket技术、Win32编程等概念,这些都是实现内网监控系统的基础技术。在第三章,首先讨论了内网监控系统应该具备哪些功能,接着设计出了服务器端和客户端器的通信协议。在第四章,首先讲述了用户界面的实现,接着着重介绍了几个核心技术的实现,包括如何对某个特定客户端进行屏幕截图,如何锁定指定客户端的屏幕以及如何在服务器端和客户端的进行通信。
2相关技术原理介绍
2.1 TCP/IP协议
2.1.1 TCP/IP协议简介
所谓协议是一套用技术术语描述某些事物应该如何做的规则。如果执行不同的协议(一方知道某事的概念,但另一方却不知道),那么他们会因各自的协议无法沟通而完不成有用的工作。在计算机网络领域中,为了完成一项任务,所涉及的两个(或多个)通信实体必须运行同样的协议。
Internet是 由众多的计算机网络交错连接形成的网际网,作为Internet成员的各种网络在通讯中分别执行自己的协议。所谓Internet协议是指在Internet的网络之间以及各成员网内部交换信息时要求遵循的协议。在Internet中,到处运行着协议,凡是涉及两个或多个远程实体的通信活动均由协议来支配。协议定义了两个或多个通信实体间所交换消息的格式与顺序,以及在发出和/或收到一个消息或者发生其他事件所采取的行动。TCP/IP是Internet网络上使用的通用协议。Internet依靠上千个网络和百万计的计算机,而 TCP/IP是把它们合在一起的粘结剂。 copyright think58 [资料来源:http://think58.com]
TCP/IP的目标是提供高速网络通信链路。TCP/IP的实际名字来源于两个最重要的协议:TCP协议与IP协议,其中传输控制协议TCP对应于开放系统互联0SI参考模型的传输层协议;网络连接协议IP则对应于OSI参考模型的网络层协议。所以TCP/IP分别是Internet在传输层和网络层执行的协议。

本文来自think58

[版权所有:http://think58.com]

[来源:http://think58.com]


在Internet内部,从主机传送到主机的信息不是一个恒定的流,而是把数据分解成小包,即数据包。例如你要发一分很长的电子邮件(E-mail)给一位朋友,TCP就将该信息分成很多个数据包,每一个数据包用一序号和接收地址来标记。此外TCP还插入一些纠错信息。接着数据包被传过网络,即把它们传送给远程的主机这就是IP的工作。在另一端TCP接收数据并检查错误。如果有错误发生,TCP就可以要求重发信息。换句话说,IP的工作是把原始数据(数据包)从一端传送到另一端;TCP的工作就是管理这种流动并确保其数据是正确的。把数据分解成数据包有很多的好处。首先,它允许Internet让很多不同的用户在同一时间用同一通讯线路。因为这些数据包不必一起输送,所以通讯线路可以载着所有类型的数据包按它们自己的路径从一地到另一地。就如同一条高速公路上,各类汽车(即使它们开向不同的地方)都在公共道路上行驶。当数据包传输时,它们沿规定的路由从主机到主机,一直到它们到达最终目的地。这意味着Internet很具灵活性。如果一个特定的连接中断了,控制数据流动的计算机通常可以找到另一条路由。事实上,在单一数据传输中,多个数据包完全可能沿不同的路由传输。当条件改变时,网络可获得当时最好的连接。如当网络的某一部分过载,数据包可以改变路线去走那些比较空闲的线路。用数据包传输的另一个好处是,当某处出错,只须重新传送单个数据包,而不是整个信息。这样会大大加快Internet的传输总速度。这种灵活性产生很高的可靠性。Internet运行非常好,虽然所有数据包都必须通过很多计算机,但它可以用几秒钟就把一个文件从一主机传输到另一主机,尽管它们相距很远。 think58好,好think58 [资料来源:http://www.THINK58.com]

IP协议只保证计算机能发送和接收分组数据,而TCP协议则可提供一个可靠的、可流控的、全双工的信息流传输服务。虽然IP和TCP这两个协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个协议来设计的,并且在功能上也是互补的。只有两者的结合,才能保证 Internet 在复杂的环境下正常运行。凡是要连接到 Internet 的计算机,都必须同时安装和使用这两个协议,因此在实际中常把这两个协议统称作TCP/IP协议。
2.2 Socket技术
2.2.1 Socket基本概念
20世纪80年代初,美国政府的高级研究机构(ARPA)给加利福尼亚大学Berkeley分校提供资金,让他们在UNIX操作系统下实现TCP/IP协议。在这个项目中,研究人员为TCP/IP网络通信开发了API(应用程序接口)。这个API称为Socket接口。如今Socket接口是TCP/IP网络最为通用的API,也是在Internet上进行应用开发最为通用的API。
Internet是有不同种类的网络互连而成,实现不同网络及计算机之间交互操作的关键问题是由TCP/IP协议来解决的。TCP/IP协议的核心是传输层协议(TCP和UDP)、网络层协议(IP)和网络接口层,前两层在操作系统内核中实现。操作系统内核是不能直接为一般用户所感受到的,一般用户感受到的只有应用程序(包括系统应用程序),即各种应用程序构成了操作系统的用户视图。两者之间的接口是网络编程界面(程序员界面)。因此,TCP/IP网络环境下的应用程序也不是直接与TCP/IP核心打交道,而是与网络应用编程接口(套接字,socket)打交道,编程接口构成了核心协议的用户视图。

[版权所有:http://think58.com]


 核心算法的实现
由于整个系统基本使用MFC开发,而且涉及到很多方面,代码量比较大,不可能一一介绍,下面选择几个较为重要的核心功能的实现进行介绍。
4.2.1 客户端和服务器端的通信
无论是屏幕截图还是锁定屏幕,都是在服务器端管理员进行命令,在客户端进行响应。因此,之间涉及大量的网络通信。在整个系统中,网络通信至关重要,主要通过两个类实现:CClient和CServer。
class CServer
{
public:
 bool Check(char* name, char* pass);
 bool UnlockScreen(char* ip);
 bool LockScreen(char* ip);
 bool SendMsg(char* ip, char* msg);
 CString GetNextClientIP();
 void PreEnum();
 bool SnapScreen(char *ip, CxImage& x);  
 void AliveAll();
 void AddClient(const Client &client);
 void Run();
 CServer()
 {
  InitializeCriticalSection(&cs);
 };
 ~CServer()
 {  
  DeleteCriticalSection(&cs);
  closesocket(srvsock);
  WSACleanup(); copyright think58

[资料来源:THINK58.com]

 };
 BOOL Init(int port);
 
private:
 static DWORD WINAPI ListenThreadPrc(LPVOID lpParam);
 SOCKET srvsock;
 SOCKADDR_IN srvaddr;
 vector<Client> clients;
 CRITICAL_SECTION cs;
 int pos;
}; [资料来源:www.THINK58.com]

在本系统中,锁屏幕和解锁主要涉及到下面几个函数:
HWND gTargWnd; //客户端窗口句柄
#pragma data_seg ("shared")
static HHOOK g_hHookK=NULL;
static HHOOK g_hHookM=NULL;
#pragma data_seg () copyright think58 [资料来源:www.THINK58.com]

LRESULT CALLBACK MouseProc( int iCode, WPARAM wParam, LPARAM lParam )
{
 /*
  *判断是对哪个窗口进行鼠标输入,
  *如果不是对客户端窗口进行输入,
  *直接返回,从而达到屏蔽鼠标的作用
  */
 if(::GetActiveWindow()!=gTargWnd)
  return 1;
 
 return CallNextHookEx(g_hHookM,iCode,wParam,lParam); 
}

[资料来源:http://THINK58.com]

DLLEXPORT int CALLBACK InstallHOOK(HWND hWnd)
{
 gTargWnd = hWnd; //客户端窗口句柄复制 think58.com

[资料来源:http://think58.com]

 //安装键盘和鼠标钩子
 g_hHookK=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,g_hInst,0);
 g_hHookM=SetWindowsHookEx(WH_MOUSE, MouseProc, g_hInst, 0);
  
 if(g_hHookM && g_hHookK)
  return TRUE;
 else
  return FALSE;
} think58 [资料来源:THINK58.com]

DLLEXPORT int CALLBACK UninstallHOOK()
{
 //卸载键盘和鼠标钩子 
 if (UnhookWindowsHookEx(g_hHookK)==0||UnhookWindowsHookEx(g_hHookM))
  return FALSE;
 else
  return TRUE;
}
LRESULT CALLBACK KeyboardProc(int iCode, WPARAM wParam, LPARAM lParam )
{
 /*
  *判断是对哪个窗口进行键盘输入,
  *如果不是对客户端窗口进行输入,
  *直接返回,从而达到屏蔽键盘的作用
  */
 if(::GetActiveWindow()!=gTargWnd)
  return 1;
 return CallNextHookEx(g_hHookK,iCode,wParam,lParam); 
} [资料来源:http://www.THINK58.com]