- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C#下局域网屏幕监控系统的实现
摘 要 介绍了用C#工具在局域网中对各工作站的屏幕活动实时监控的实现思路与设计过程,并可以通过控制中心与各工作站进行信息沟通并控制客户端,为局域网的管理提供了一种技术支持,具有很好的借鉴作用。
关键词 C#;局域网;屏幕监控;信息沟通
1 引言
对于局域网管理员来说,实时查看网络中各个工作站的屏幕活动情况是很正常的工作,同时也需要对不符合网络要求的操作进行信息沟通。对于现场比较远的网络系统而言,频繁地到现场去检查监督很浪费精力,一个具有屏幕监控和信息传递的软件将会大大减轻网管人员的工作负担。
2 实现思路
为能更好地实现软件功能的设计,从以下几方面入手来进行规划设计:
(1) 采用客户端和控制台方式来设计软件,客户机和控制台依据功能要求分别设计软件,并分开安装。
(2) 控制台软件采用C#下的Socket通信建立与客户端的通信连接,应包括屏幕监控、屏幕锁定/解锁、强制关机、信息传递等功能。也可以用一个文本文件或数据表按特定格式保存局域网内各工作站的IP地址。
(3) 在对图像的处理方面,设定多线程对通过Socket传送来的数据保存为临时位图文件后在控制台界面里进行显示。
(4) 尽可能对客户端运行的程序进行隐含运行,便于管理员的控制。
3 程序界面
程序设计过程采用了C#常用的控件,用Socket的通信方式对通信协议进行约定定义,达到通信握手的目的。在主控台的画面显示窗体里判定传送过来的图片的大小,并适时调整。其主控界面如图1所示。
HYPERLINK /pic/2012122792534.jpg \t _blank
图1 服务端监控
4 关键代码
4.1 控制端代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Drawing;
using Client;
namespace RemoteControl
{
public class RevThread
{
public delegate void displayRevData(Point left_top_point,Point right_bottom_point,Image data);
public displayRevData display_rev_data_func;
private const int local_port = 61002;
private UdpClient rev_data_udp;
private Thread rev_data_thread;
public RevThread(displayRevData disp_function)
{
this.display_rev_data_func = disp_function;
ThreadStart ts = new ThreadStart(rev_data);
rev_data_thread = new Thread(ts);
rev_data_thread.Start();
}
public void send_monitor_to_client(string local_ip_address,string dest_ip_address)
{
send_monitor_to_client(local_ip_address,dest_ip_address, false);
}
public void send_monitor_to_client(string local_ip_address,string dest_ip_address,bool send_all_screen)
{
//IP地址及端口信息
string command_string = ##IP: + local_ip_address + #IPEND###PORT: + local_port.ToString() + #PORTEND##;
文档评论(0)