Windows服务

2024-05-31

Windows服务(精选12篇)

Windows服务 篇1

一、终端服务的安装

准备Windows 2000 Advanced Server(或Windows 2000Server)的安装光盘及两张空白的软盘。

(一)服务器端的安装。

1、添加终端服务组件:选“控制面板→添加/删除程序→添加/删除Windows组件”,把“终端服务”和“终端服务授权”两项均选中,再选“下一步”开始安装所选组件,对于后面的所有提示,均按其默认选项即可直至完成。2、安装成功后,按提示重新启动后,则可在“开始→程序→管理工具”中看到相关组件,包括“终端服务授权”、“终端服务管理器”、“终端服务客户端生成器”及“终端服务配置”四项。3、制作客户端安装盘:选“终端服务客户端生成器”,则出现“创建安装盘”的窗口,保持默认选项不变,随着提示依次把两张软盘(注意作好顺序标记)插进软驱以完成客户端安装盘的制作。4、在服务器端赋予终端登录的权限:打开“终端服务配置”窗口,依次选“连接→右边面板→RDP-Tcp”双击鼠标左键打开RDP-Tcp的属性对话框,选择“权限”标签,单击“添加”按钮,将目标用户(或组)名添加进列表中。(注:默认的,“Administrator”自动具有终端登录的权限。)当客户端我们要使用同一用户登录,则在RDP-Tcp的属性对话框中选择“登录设置”标签,进行用户登录的设置。如若不设置也可在客户端建立登录连接时在客户端上设置。

(二)客户端的安装。

安装客户端我们可以通过网络共享方式,将客户端软件拷贝到共享目录。或者直接通过软盘来安装,我们就先以软盘安装为例。1、运行第一张安装软盘中的“setup.exe”程序,各项提示均按默认选项直至安装完成。2、安装完成后,不需重新启动,直接在“开始→程序→终端服务客户端”中看到相关组件,包括“客户端连接管理器”、“卸载”和“终端服务客户端”三项。3、在客户端建立登录连接:(1)打开“客户端连接管理器”,选“文件→新建连接”,再输入连接名(可任意,如server)、服务器名或IP地址。(2)选中“用此信息自动登录”,并输入相应的用户名、密码及域名。如果登录信息在服务器端设置,则此项可不用选择。(3)选择屏幕区域,如“800*600”,并选中“全屏”。接下来按默认的提示直至设置完成。

二、终端服务的简单设置

(一)合理设置各个逻辑驱动器及文件夹的用户权限。

由于NTFS文件系统可以较好地支持文件夹及文件的安全特性。所以在安装Windows 2000 SERVER操作系统时,建议采用NTFS文件格式,而不要采用FAT文件格式。设置方法如下:打开“我的电脑”,选择某一逻辑驱动器或文件夹,单击鼠标右键,选择下拉菜单中的“属性”命令,打开属性对话框。单击“安全”标签,在“权限”列表框中,把此文件夹需要的权限,在“允许”下边,打上钩。

(二)具体设置建议:

建议将逻辑驱动器划分为(C、D、E)三个逻辑驱动器,C盘放置系统文件,D盘放置管理员文件,E盘放置用户文件。C盘的Everyone安全属性设置允许“读取及运行”、“列出文件夹目录”、“读取”,以保证系统文件的安全性。D盘不设置Everyone安全属性,添加Administrator安全属性。这样用户就不能访问到这一逻辑驱动器,以保证管理员文件的安全。E盘由于专门放置用户文件,所以Everyone属性可以设置除“完全控制”之外的所有属性。如果某用户有特殊要求,可在“名称”列表框中“添加”此用户,专门为此用户设置专门的安全属性。

(三)用户桌面属性权限设置:

系统管理员在服务器端安装好某一软件之后,可以非常方便的在每一用户的桌面上建立快捷方式图标。方法是:鼠标指向“开始”菜单,单击鼠标右键,点击“浏览所有用户”, 单击“all?users”下的“桌面”,把开始菜单程序下的应用程序或快捷方式图标复制到此,这样所有用户的桌面上均有此快捷图标了。删除所有用户桌面的快捷图标,只需要在服务器的“all users”下的桌面,删除此快捷图标即可。

合理设置用户的桌面属性及权限,可以保证用户的桌面干净、整洁:鼠标指向“开始”菜单,单击鼠标右键,点击“浏览所有用户”,系统弹出对话框,选择“All users”下的“桌面”,单击鼠标右键,系统弹出桌面安全属性设置对话框,在对话框中设置所有用户桌面的安全属性,为了保证所用用户桌面统一和干净整洁,建议其安全属性允许“读取及运行”、“列出文件夹目录”、“读取”,这样这些用户就不能删除其桌面的图标了。某些用户有特殊要求,可在其用户文件夹下设置符合其要求的桌面属性。

(四)用户开始菜单及程序限制的设置:

所有在服务器上安装的程序用户都是可以运行的。但是根据实际情况某些应用程序是不需要用户执行或看到的。例如服务器上的“管理工具”,设置方法是:打开“开始”菜单,选择“程序”,在“管理工具”菜单项上单击鼠标右键,在快捷菜单中选择“属性”,弹出设置对话框,选择“安全”标签,删除名称下的Everyone,这样其他用户就不再能看到或执行此应用程序。对于应用程序如果要限制用户的使用,我们不仅要在开始菜单设置,还要进入程序的安装目录按前面所述方法将其给予限制,这样即使用户找到程序的安装目录也无法打开运行。

(五)用户会话限制设置:

所有终端用户使用的均是服务器的资源,如何提高服务器的利用率成为一个非常重要的问题。设置用户会话限制可以提高系统利用率。设置方法是:在开始菜单中选择程序→管理工具→终端服务配置→连接→RDP-Tcp,双击鼠标左键打开RDP-Tcp属性设置对话框,在“会话”标签中选择“替用户设置”,在“结束已断开的会话”中选择“1分钟”,这样用户关机1分钟后,服务器就会自动断开与其的连接,提高服务器的利用率。“活动会话限制”设置为“从不”,这样用户在与服务器的连接过程中就不会与服务器断开。“空闲会话限制”设置为“10分钟”,这样当用户10分钟不用计算机,用户的计算机就与服务器自动断开,同样提高了服务器的利用率。

三、终端服务的使用

双击所建立的登录连接,即可自动完成终端登录。现在的屏幕就和WINDOWS 2000的桌面无异,我们就可以像运行自己机器上的软件一样使用服务器里的内容了。按“Ctrl+Alt+Break”的组合键,可以在窗口和全屏幕间进行转换,在终端窗口中选“开始→关机→注销”即可退出。

Windows 2000终端系统其简单、方便和集中的管理模式,使许多企、事业单位尤其是学校在新建机房或改造机房的过程中选择了Windows 2000终端系统。由于此系统属服务器/客户机系统,所以用此系统的机房或单位在服务器的管理上显得非常重要。

Windows服务 篇2

下边是方法

控制面板—管理工具—本地安全策略或者命令gpedit.msc

选择创建 IP 安全策略

点选下一步

我们就是要禁止他,不和他说话,那么,取消勾选

直接按完成.那个勾选是默认的

注意右下的”添加向导”,如果勾选了,取消他,然后点击”添加”

选中刚刚建立的 禁止ip点 编辑(@添加ip)

把”添加向导”的勾选取消 , 然后点添加

地址和目标别写反了,把自己给封了

// 然后切换到 “协议” 面板

我这里是选择 tcp 到80端口 ,直接按确定,回到上层界面,继续确定,回到新规则属性面板

选择“筛选器操作”面板

这里的阻止 是我先前做的添加的, 操作步骤为: 取消 “添加向导” 的勾选点 添加

在常规里面重命名为 阻止 就ok了

一路确定,回到

注意要禁止ip 前面的勾选

确定,完成此策略

最后需要指派策略

到此,刚才显示的ip116.164.68.6 地址的用户就不能访问服务器了

添加多ip 从 (@添加ip)开始

也可以通过nginx禁止WEB通过IP访问

nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时候生效

最关键的一点是,在server的设置里面添加这一行:

listen80 default;

后面的default参数表示这个是默认虚拟主机,

这个设置非常有用。

比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500.

目前国内很多机房都要求网站主关闭空主机头,防止未备案的域名指向过来造成麻烦。就可以这样设置:

代码如下复制代码server {

listen80 default;

return 500;

}

也可以把这些流量收集起来,导入到自己的网站,只要做以下跳转设置就可以:

代码如下复制代码server {

listen80 default;

rewrite ^(.*) www.mydomain.com permanent;

}

==============================

按照如上设置后,确实不能通过IP访问服务器了,但是在应该用中出现当server_name后跟多个域名时,其中一个域名怎么都无法访问:

设置如下:

代码如下复制代码server

{

listen80;

server_name www.abc.comabc.com

没更改之前,通过server_name 中的www.abc.comabc.com均可访问服务器,加入禁止IP访问的设置后,通过abc.com无法访问服务器了,www.abc.com可以访问

用 nginx -t 检测配置文件会提示warning:

[warn]: conflicting server name “abc.com” on 0.0.0.0:80, ignored

the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok

configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful

最后通过在listen 80 default;后再加server_name _;解决,形式如下:

代码如下复制代码

#禁止IP访问

server

{

listen 80 default;

server_name _;

return 500;

}

Windows服务 篇3

这两个曾经的宿敌还称,将合作开发基于Sun Fire硬件的微软服务器操作系统,并且让Sun的Solaris Unix操作系统完全可以利用微软近期推出的系统中心虚拟机管理器软件来管理。

这些举措有望帮助Sun提升服务器销量。自从网络泡沫破裂后,运行Linux或Windows的廉价PC服务器开始流行起来,Sun的服务器销量大不如前。

因此,Sun一直在做出积极主动的合作举动。IBM上个月称,将销售采用Solaris的服务器和刀片系统。

对微软来说,这项合作有望帮助该公司争夺炙手可热的虚拟化市场,它在这个领域排在市场领头羊VMware的后面。Sun长期以来就有自己的虚拟化技术——Solaris容器(Solaris Containers)。

此次合作扩充了双方2004年4月签署的初期技术合作协议,当时微软还向Sun支付了16亿美元,结束了旷日持久的反托拉斯和专利纠纷。

Sun还将在微软总部建立互操作性中心。双方还将加强互联网协议电视方面的合作伙伴关系,这涉及微软的MediaRoom IPTV与多媒体平台以及Sun的服务器与存储系统。

■ 分析师点评

Windows服务 篇4

在.NET环境下开发Windows服务并不是一件特别复杂的工作, 但在开发过程中有许多细节需要注意, 下文将通过开发一个简单的Windows服务来说明在开发Windows服务过程中应该注意的问题。

1 创建Windows服务项目

在VS2010中创建一个新项目, 选择Windows服务模板, 并将项目名称命名为My Service。在打开的解决方案资源管理器中, 我们可以看到Windows服务项目的文件结构和Windows窗体应用程序项目类似, 只是其中的Form1.cs文件被替换为了一个名为Service1.cs的文件。打开program.cs文件, 我们会看到如下代码:

Service Base类是所有用.NET Framework开发的Windows服务的基类。所有的Windows服务类均必须从该类中派生。在上述代码中, 调用该类的静态方法RUN用于在服务控制管理器 (SCM) 中注册服务器的可执行文件。SCM是操作系统的一个组成部分, 它的作用是与服务进行通信, 并对服务进行管理。下图阐明了这种通信处理序列图的方式。

如果将服务设置为自动启动, 则在系统启动时, 将启动该服务的进程, 进而调用该进程的主函数。服务负责为它的每一个服务都注册一个service-main函数。主函数是服务程序的入口点, 在这里, service-main函数的入口点必须用SCM注册。

2 编写服务代码

创建好Windows服务项目后, 我们需要在项目中添加自己的服务逻辑。双击默认的Service1.cs文件, 我们将看到一个类似于Windows项目的设计界面。注意, 切记不要向其中拖放可视化空间, 由于Windows服务不支持可视化界面, 如果拖入可视化控件, 可能造成服务崩溃。选择这个服务的属性, 可以打开Properties editor窗口。在其中可以配置如下值:

Auto Log指定把启动和停止服务的事件自动写到事件日志中;

Can Pause And Contiue、Can Shutdown和Can Stop指定服务可以处理暂停、继续、关闭和停止服务的请求;

Service Name是写到注册表中的服务的名称, 使用这个名称可以控制服务;

Can Handle Session Change Event确定服务是否能处理终端服务会话中的改变事件;

Can Handle Power Event选项对运行在笔记本电脑或移动设备上的服务有效。如果启用这个选项, 服务就可以响应低电源事件, 并相应地改变服务的行为。

在设计界面中单击右键, 并选择查看代码选项, 我们将看到如下代码:

On Start方法和On Stop方法是从Service Base类继承下来的方法, 我们必须对他们进行重写, 来实现我们自己的服务的业务逻辑。调用On Start方法将启动服务, 该方法的线程不能停滞下来, 必须尽快返回给调用者。这是因为SCM对服务管理得限制, 如果服务的初始化花费的时间过多, 则SCM就假定服务启动失败。为了解决这个问题, 我们通常会利用线程来处理服务的实际工作。On Stop方法与On Start方法类似, 该方法会再服务停止时被调用。

修改Service1.cs中的代码, 添加服务的业务逻辑:

在初始化方法中将业务逻辑绑定到线程上, 并在On Start方法中添加启动线程的方法。该示例完成了一检测QQ进程, 并关闭QQ进程的Windows服务。

3 服务的安装

在Service1的设计界面中, 单击右键, 并选择添加安装程序子菜单, 该操作会向项目文件中添加一个名为Project Installer.cs的文件, 该文件中主要包含了Service Installer和Service Process Installer两个组件。这两个组件均派生于Component Installer类。其中Service Process Installer用于配制进程, 为这个进程中的所有服务定义值, 而Service Installer用于服务的配制, 因此, 每个服务都需要Service Installer类的一个实例。如果进程中有3个服务, 则必须添加额外的Service Installer对象。

在属性窗口中将Service Installer组件的Start Type属性设置为Automatic, 该属性的作用是设置服务的启动方式, 在这里将其设置为自动启动。将Service Process Installer的Account属性设置为Local System。Acount属性的作用是用于配制安装服务时, 使用的权限, 在这里我们使用了本地系统上的用户账户。

配制完安装相关的属性后, 在生成菜单中选择生成解决方案子项, 这时将在项目的目录中生成服务的EXE文件, 注意, Windows服务与普通应用程序不一样, 在操作系统中安装注册以前无法直接进行调试运行, 所有不要直接使用F5运行。

4 编写批处理文件, 安装运行Windows服务

在项目中添加2个文件如下 (必须是ANSI或者UTF-8无BOM格式) :

1) 安装脚本Install.bat

2) 卸载脚本Uninstall.bat

这两个脚本文件使用了installutil.exe使用程序来安装和卸载服务, 这个使用程序可以用于安装包含Installer类的所有程序集。Installuntil.exe使用程序调用派生自Install类的Installer () 方法进行安装, 调用Un Installer () 方法进行卸载。该程序在安装Framework时安装到系统目录下。

5 结语

本文研究了在.NET环境下使用C#语言开发Windows服务的一般方法, 并使用一个简单的案例阐述了Windows服务的开发步骤。在阐述过程中介绍了.NET中实现Windows服务的相关类的使用方法, 以及在开发Windows服务时应注意的的一些细节。通过阅读本文让读者能够轻松的开发自己的Windows服务项目。

参考文献

[1]内格尔, 埃夫琴等著.C#高级编程[M].北京:清华大学出版社, 2010.11.

[2]Mc Connell.代码大全.电子工业出版社[M], 2006.3.

Windows服务 篇5

一、上传文件大小限制修改:

1 、运行iisreset –stop,关闭 iis admin service 服务。

2、找到 windowssystem32inesrv 下的 metabase.xml 文件。

3、用纯文本方式打开,找到 ASPMaxRequestEntityAllowed 把它修改为需要的值(比如10M即:10240000),默认为:204800,即:200K。

4 、存盘,然后运行iisreset重启 iis admin service 服务。

二、下载文件大小限制修改:

1、运行iisreset –stop,关闭 iis admin service 服务。

2、找到 windowssystem32inesrv 下的 metabase.xml 文件,

3、用纯文本方式打开,找到 AspBufferingLimit 把它修改为需要的值(比如20M即:20480000),默认为4M。

4、存盘,然后运行iisreset重启 iis admin service 服务。

win2008+IIS7:

打开IIS管理器

双击“IIS”中的“ASP”

打开“配置 ASP 应该程序的属性”

展开“限制属性”;

修改“最大请求实体主体限制”的值,默认值为200000(即不到200KB);

把它修改为你想修改的大小,如:52000000(50MB)。

Windows服务 篇6

关键词:项目教学法;Windows网络服务;应用

熟练使用Windows系统的网络服务是计算机网络应用专业的核心技能,《Windows 网络服务》是技工学校计算机网络应用专业普遍开设的核心课程。该课程是一门理论和实践都很强的课程,如何使学生学好这门课程,掌握知识要点和操作技能,教师需要在教学过程中不断探索、研究和改进教学方法。笔者以项目教学法理念为指导,结合教学实践,谈谈项目教学法在《Windows 网络服务》课程中的应用。

1 项目教学法的含义及其特点

1.1 项目教学法的含义 项目教学法,是在教师的引导下,由学生处理一个完整的工作项目,学生负责任务的分析、方案的设计、项目实施及评价。在项目的实施过程中,学生了解并把握整个过程及每一环节,能够理解和掌握课程要求的知识和技能,还能体验到完成项目的艰辛与乐趣,培养发现、分析、解决问题的能力,实现专业、方法和社会能力的提高。

在《Windows 网络服务》课程教学中,笔者首先广泛调研,收集资料,将本课程知识点和本专业所对应的行业中具体工作岗位的典型工作任务相结合,转化为一个个项目和需求。学生参与项目设计、实施、评价的各个环节,通过多种手段和方法,既掌握了知识,又提高了综合职业能力。

1.2 项目教学法的特点 项目教学法的显著特点是“以项目为主线、教师为引导、学生为主体”。主张先学后教、研学后教,强调学生的自主学习、主动参与教学,调动学生学习的主动性、积极性、创造性。与传统教学方法相比,它有以下的特点:①在教学内容上:不再以“知识点”为线索的方式,而是根据学生的认知特点及专业的工作需求,以实际工作项目为依据,精心组织教学内容,使其符合学生的实际情况,又和企业实际工作相通。②在教学方法上:在教学过程中根据项目的需求来学习理论知识,教师只是作为引导者,要求学生主动地寻求知识,以小组讨论、组内分工的方法完成项目。注重培养学生的自学和探索能力,由“学会”到“会学”。③在能力培养上:学生在项目完成的过程中,个人会积极地去思考、探索,组员之间会讨论、沟通、协作。每个人的思路、想法不尽相同,让他们共同完成项目任务,能够取长补短,培养了学生的合作意识和创新精神。④在就业导向上:选择的项目全都来自实际工作,更能体现以工作过程为导向的职业教育特色,“学习即工作,工作即学习”,让学生毕业后能快速适应企业工作要求。

2 教学课程中实施项目教学法的必要性和可行性

传统的“教师教,学生学”教学方法,表面上学生能够“照葫芦画瓢”完成操作,但实际上一下课就基本忘记所学知识,更谈不上融会贯通,应用于实际工作中。同时,学生单纯被动地接受知识,主动性没有得到发挥,各方面能力得不到锻炼,严重影响步入社会之后的发展。采用项目教学法,由教师根据授课内容布置项目,使学生以实际工作任务为核心,在项目实施过程中融入理论知识,在项目实施的整个过程中很好地参与到教学活动中,促进了学生综合职业能力的提升。

本课程在第二学期开设,学生经过第一学期的教学,基本适应了技工学校专业学习的特点。学生虽然理论知识较差,但动手能力强,对主动参与教学这种新奇的教学方式有较浓厚的兴趣,同时也具有一定的专业基础知识,能够适应项目教学对自学能力、专业能力要求。

3 项目教学法在教学活动中的应用设计

《Windows 网络服务》课程主要讲述网络服务的配置与管理,包括:DHCP、DNS、WEB、FTP、VPN、数字证书、软路由等服务,每个服务都涉及很多理论知识,但知识点又相对独立,跟企业实际应用结合非常紧密。笔者根据每个单元的教学目标设置了相应的项目与案例,按照项目任务分析——方案设计——项目实施——评价及总结四个过程进行教学。下文以“DHCP服务配置”为例进行阐述。

3.1 项目任务分析 学生阅读教师下发的项目任务书,在项目要求和教师的指导下,了解项目背景和项目目的,听取教师对DHCP技术的讲解,思考完成任务的手段和方法。

3.2 项目方案设计 根据班级人数进行分组,每组人数在4-6人左右。在组长带领下,发挥组员们的聪明才智,讨论、理解任务书的要求,发现问题及寻求解决方法,按要求完成项目方案的设计及完善。

3.3 项目实施 根据任务方案,各小组在虚拟机上快速配置服务器地址、安装DHCP服务、启用DHCP服务,并进行作用域的配置、保留地址配置、作用域选项中的DNS、网关等内容。在客户机上进行测试,看是否能获得地址,体验DHCP服务的应用效果。完成项目后,小组内部讨论配置过程中的问题及解决的方法、方案中的不足之处。

3.4 项目评价与总结 各小组进行任务汇报,讲述任务完成的过程、碰到的问题及解决的方法,并回答其他小组提出的问题。其他小组根据教师提供的评分细则对各小组的完成情况进行打分,并进行总结。

最后,教师对学生整体表现进行总结和评价。表扬表现好的小组和组员,分析学生在各个任务实施过程中出现的问题,提出建议和改进措施,避免类似问题再次出现。

4 课外任务扩展

教师根据每组项目完成情况判断学生掌握知识情况,布置相似或深化的项目让学生完成,并进行分工调整及角色互换,以保证知识的系统掌握和完整性。本次教学后,笔者发放《课外拓展训练任务书》,架设一台DHCP服务器,实现为公司各部门不同网段的电脑提供IP地址,主要学习DHCP中继代理的功能。

5 结束语

本项目在教学的组织和安排上参照企业项目实施的实际过程,由浅入深、层层推进,以学生为中心,教师做引导,通过创设工作情境、小组讨论协作等方式帮助学生真正掌握如何配置DHCP服务,教学效果好,达到了预期的目标。在教学过程中也发现,因为不同层次同学的接受程度不一样,存在优秀学生“吃不饱”,后进学生跟不上的问题,有个别组员参与不积极,有“出工不出力”的现象。教师未掌控好时间的分配,导致后面环节时间不够。教师要充分分析学情、掌控时间、考虑学生的主观能动性,避免因纠缠于某一问题而影响教学进程和效果,需要在今后的教学中加以改进。

参考文献:

[1]陈铧妮.项目教学法在《Premiere影视编辑》课程中的应用[A].2013年第七届广东省技工院校优秀论文集[C],2013.

[2]耿岩.项目教学法在中职学校课程教学中的运用[J].中国科教创新导刊,2014.

Windows服务 篇7

DNS (DNS, Domai n Name Ser vi ce) 即域名服务, 是一个建立在层次域结构上的分布数据库系统, 它提供域名与IP地址之间的自动转换, 网络管理员使用主机名称和IP地址的列表来配置DNS, 允许网络上的用户通过主机名而不是IP地址来访问网上资源, 如www.sj zcvc.com, 通过DNS服务器的解析就可以访问到相应IP的主机, 而不需要用户直接输入IP地址。

二、DNS基本原理

通常的域名解析由两种机制来完成, 一种是由主机表来完成, 另一种是采用域名服务来实现。

主机表解析方式是通过一个本地文件来进行主机名到IP地址之间的映射, 但随着网络的发展, 这种机制存在很大的局限性。

域名服务解析方式是通过在网络中创建不同的区域, 并采用一个分布式数据库系统进行主机名和地址的查询。当在客户机的浏览器中键入要访问的主机名时, 就会触发一个IP地址的查询请求, 该请求会自动发送到默认的DNS服务器, DNS服务器就会从数据库中查询该主机名所对应的IP地址, 如果该客户机指定的DNS服务器中没有包含相应数据, 则由DNS服务器在网络中进行递归查询或迭代查询, 在其他服务器上获取地址信息, 并将找到的IP地址作为查询结果返回。浏览器获得IP地址后, 就根据IP地址访问资源。

DNS服务器的工作原理:

1. 客户机将域名查询请求 (www.

sj zcvc.com.cn) 发送到本地DNS服务器, 服务器将在本地数据库中查找客户机要求的映射。

2. 如果本地服务器不能在本地找到

客户机查询的信息, 将客户机请求发送到根域名DNS服务器。根域名DNS服务器也没有此记录, 但它知道.cn服务器, 所以把这个DNS服务器地址返回给客户机的DNS服务器。

3. 本地DNS服务器发送一个对www.

sj zcvc.com.cn解析的请求到.cn服务器。这台服务器也没有此记录, 但它知道com.cn域的服务器, 所以把com.cn域的服务器地址返回给客户机的DNS服务器。

4. 本地DNS服务器发送一个对www.

sj zcvc.com.cn解析的请求到com.cn域的服务器。这台服务器也没有此记录, 然而它知道sj zcvc.com.cn域的服务器, 所以它把这个DNS服务器地址返回给客户机的DNS服务器。

5. 本地DNS服务器发送一个对www.

sj zcvc.com.cn解析的请求到一台授权管理sj zcvc.com.cn域的服务器。这台服务器确实存储所需的IP地址记录, 此服务器就返回要查询的结果。

6. 客户机的本地DNS服务器返回给客户机解析器相应结果。

7. 客户机利用从本地DNS服务器查询得到的IP地址访问目标主机。

三、安装DNS服务

DNS作为Wi ndows 2003的一个网络组件提供域名解析服务, 可以在安装Wi ndows Ser ver 2003的过程中或之后安装DNS, 要求这台Windows 2003 Server服务器有静态的IP地址和正确的域后缀。

具体步骤:打开“控制面板”→“更改/删除程序”→“添加/删除Windows组件”选项。在组件列表中, 选中“网络服务”, 单击“详细信息”, 选中“域名服务系统 (DNS) ”, 单击“确定”按钮, 根据提示进行安装。

四、DNS区域

DNS服务器是以区域为单位来管理域名空间, DNS允许域名空间分成几个区域, 将这些信息数据保存在区域文件中。Wi ndows 2003 DNS中的区域有三种类型:主要区域、辅助区域、存根区域。

按照DNS查询区域的类型, DNS的区域可分为正向查询区域和反向查询区域。正向查询是DNS服务器要实现的主要功能, 它根据计算机的域名, 解析出相应的IP地址;反向查询则是根据计算机的IP地址解析出它的域名。

五、创建DNS区域

1. 在主服务器ser ver上创建正向查询的主要区域。

(1) 打开“开始”→“管理工具”→“DNS”选项, 将打开DNS管理控制台。

(2) 在DNS控制台, 单击服务器名称, 选择“创建正确查找区域”, 单击“下一步”。

(3) 在“主服务器位置”界面, 选择“这台服务器维护该区域”的界面。

(4) 在“区域名称”窗口, 输入区域名称, 例如“sj zcvc.com”, 单击“下一步”按钮。

(5) 在“动态更新”界面, 选择只允许安全的动态更新, 单击“下一步”按钮。

(6) 选择创建新的区域文件, 单击“下一步”, 单击“完成”。

2. 在主服务器ser ver上创建反向查找的标准主要区域。

在DNS标准中定义了特殊域i n-addr.ar pa域, 并保留在DNS名称空间中, 反向查找区域中的域是域in-addr.ar pa的子域。

(1) 在DNS控制台中, 单击“反向查找区域”, 选中“新建区域”, 单击“下一步”。

(2) 出现新建区域向导, 区域类型选择为“主要区域”。单击“下一步”。

(3) 对于网段202.99.160.0输入网络号202.99.160。单击“下一步”。

(4) 选择创建新的区域文件, 文件名为202.99.160.in-addr.arpa.dns。单击“下一步”, “完成”。

3. 向该区域添加资源记录。

(1) 在DNS控制台树中单击选中区域sj zcvc.com, 单击“操作”→“新建主机”。

(2) 在“名称”栏输入主机名www, 在“IP地址”栏输入对应的IP地址202.99.1 60.20, 选中“创建相关的指针 (PTR) 记录”, 单击“添加主机”按钮完成。

名为www的主机记录出现在正向查找区域“sj zcvc.com”中, 同时名为202.99.1 60.20的相关指针记录出现在反向查找区域“202.99.160.x Subnet”中。

六、测试DNS服务

打开命令提示符界面, 输入命令:nslookup进行验证测试。

摘要:本文介绍了DNS的概念、原理, 在WINDOWS 2003下的安装与配置。

Windows服务 篇8

几乎每款操作系统都有在系统启动时启动进程的机制, 在Windows系统中, 这些进程被称为Windows服务或者服务, 它们通过Windows API与系统进行交互。Windows服务程序的应用范围很广, 文献[1]应用于网口与串口通信软件的设计, 文献[2]利用Windows服务和活动目录实现资源的动态管理, 文献[3]将Windows服务技术应用在证券核算信息系统中, 文献[4]利用Windows服务实现数据库数据监控, 文献[5]将Windows服务应用于Web服务安全构件的设计, 文献[6]利用Windows服务监控EXE进程。本文将讨论在.NET平台下Windows服务的开发。

1 Windows服务

一个Windows服务程序是在Windows操作系统下不要求用户交互而能在后台运行特定功能的可执行应用程序, 是没有Windows窗口界面的后台运行程序。对于自动启动的Windows服务程序, 在Windows启动或是重启之后, 用户登录之前就开始执行, 并且连续执行, 直到Windows系统关闭才最终停止。Windows NT和Windows2000, 以及更新的版本操作系统能运行Windows服务, 但Windows98及其前期版本是不能运行服务的。

像Exchange Server、SQL Server、Internet Information Server (IIS) 和杀毒软件等都使用这种方式, 这样就可以独立于某一用户而且可以在任何用户登录前运行, 同时也可以服务于所有的进程, 持续地监控计算机上所发生的每一事件或执行计算机上的每一个任务, 从而以一种服务的形式存在。

Windows服务程序为其他系统模块提供了非常重要的服务, 而且各个Windows服务分工明确。例如, 名为Print Spooler的服务用于提供打印支持, 若该服务不启动, 则任何软件都不能进行打印, 包括记事本和Word等。

Windows服务由服务控制管理器 (SCM, Service Control Manager) 、服务控制程序 (SCP, Service Control Program) 和服务应用程序构成。

服务控制管理器SCM是操作系统内置的一个组件, 存在于Service.exe中, 在Windows操作系统导入时自动启动, 随Windows操作系统的关闭而终止。这个进程以系统特权运行, 并且提供一个统一的、安全的手段去控制服务。SCM通过维护数据库对已经安装到系统的所有服务和驱动程序进行统一而安全的控制和管理, 因此一个服务程序的安装过程就是将自身的信息写入这个数据库。

服务控制程序SCP是用来操纵服务控制管理器配置、启动、暂停和停止服务, 并且控制一个或多个安装在计算机上服务的Win32应用程序。Windows系统管理工具中的服务管理器就是一个典型的SCP, 通过服务属性对话框可以查看服务名称、可执行文件存储路径和启动类型, 控制服务的启动、停止、暂停和恢复等状态, 以及服务的登录身份、恢复设置和依存关系。SCP可以由我们自己来编写。

服务应用程序其实就是Windows可执行程序, 加上一些代码来接收SCM的命令, 以及将应用的状态反馈给SCM。因为大多数服务没有用户界面, 它们是按照控制台程序来创建的。用户想要启动、停止或者配置服务, 可以使用SCP。虽然Windows内置的SCP提供了一般性的启动、停止、暂停和继续功能, 有些服务应用程序也包含了自己的SCP, 以便管理服务的特殊设置。

2 Visual C#实现Windows服务

.NET框架简化了Windows服务程序的创建和控制过程。要创建一个最基本的Windows服务程序, 我们需要运用.Net框架下的System.Service Process和System.Configuration.Install两个命名空间, 以及四个类:Service Base、Service Installer、Service Process Installer和Service Controller。

System.Service Process和System.Configuration.Install命名空间提供用于实现、安装和控制Windows服务应用程序的类。

类Sevice Base用来创建和启动服务。定义一个服务类, 该类继承自System.Service Process.ServiceBase类型, 重载它的On Start方法来响应启动服务的事件, 重载On Stop方法来响应停止服务的事件, 重载On Pause方法来响应暂停服务的事件, 重载On Continue方法来响应恢复提供服务的事件。在重载这些方法时必须要立即返回, 不能出现长时间的操作, 若处理时间过长则Windows服务管理器会认为该Windows服务停止响应而报错。为此我们可以使用一个线程来进行实际的工作, On Start方法创建线程, On Stop方法关闭线程, On Pause方法挂起线程, 而On Continue方法用来恢复运行线程。启动服务通过在Main函数中调用“System.Service Process.Service Base.Run (自定义服务类的实例) ”来实现。比如“System.Service Process.Service Base.Run (new My Service () ) ”, 这里的My Service就是继承自Service Base的服务类。

Windows服务程序的安装由安装类System.Configuration.Install.Installer来完成。定义一个安装类, 该类继承自System.Configuration.Install.Installer类型, 该类型用来配合微软.NET框架自带的安装命令行工具Install Util.exe。然后为该类型附加System.Component Model.Run Installer Attribute特性, 并在它的构造函数中使用System.Service Process.Service Installer对象和System.Service Process.Service Process Installer对象向系统提供该服务的安装信息, 包括Windows服务运行所需的帐号信息, 用户名、密码信息以及Windows服务的名称, 启动方式等信息, 并由.NET提供Service Controller组件用于连接到已安装的服务并对其进行操作或获取有关它的信息。这样在程序编译后即可以使用命令行“Install Util.exe EXE文件名”向Windows服务管理器安装服务, 可以使用命令行“Install Util.exe/u EXE文件名”从Windows服务管理器中卸载服务。同时可以对服务启动、停止、暂停、继续或执行自定义命令。

下面就利用Visual C#开发一个Windows服务, 为了比较直观的观察Windows服务的工作状态, 这里让Windows服务每5分钟弹出一个消息对话框。

运行Visual Studio.NET 2008, 建立一个Visual C#的Windows服务项目My Service, 新建My Service.cs文件, 系统自动生成的代码包含My Service的构造函数、On Start方法和On Stop方法。而程序主函数在系统自动生成的Program.cs中, Main () 方法会由服务控制管理器SCM调用, 在这个方法中调用Run函数来运行Windows服务。Main () 方法中有一个Service Base[]的数组, 它是为那些一个服务进程包含多个服务准备的, 对于这个程序来说, 它只有一个My Service服务。

下面利用线程技术来实现Windows服务的执行代码, 这里只实现了服务的启动和停止, 对于服务的暂停和恢复实现类似, 实现时在线程中完成对时间的监测, 而线程的启动和停止交给服务的启动和停止, 即实现My Service.cs文件中的On Start和On Stop方法。

为类My Service添加一个成员字段private Thread Main Thread;, 同时在构造函数中对其进行初始化:

编译生成My Service.exe后无法直接运行, 需要用installutil.exe安装Windows服务。在设计页面上右键菜单中选择添加安装程序。这时会出现一个新的页面, 页面上有自动生成两个对象service ProcessInstaller1和service Installer1。

(1) 在service Process Installer1中把属性Account改为Local System。

(2) 在service Installer1中把属性Parent改为service Process Installer1;Service Name属性是生成服务后的名子, 设为My Service;Start Type属性可以改为Automatic。

添加完成之后, 重新生成My Service.exe。在命令提示符界面下切换到Framework2.0所在目录 (如cd C:WINDOWSMicrosoft.NETFrameworkv2.0.50727) , 输入命令“Install Util D:My Service.exe”安装服务, 此时服务已启动, 当服务运行5分钟后, 弹出消息提示对话框提示“Windows服务程序已运行5分钟!”。

如果不想通过Windows服务管理器来控制和管理服务, 可以自行编写服务控制程序, 下面就为前面的My Service服务编写一个客户端程序, 用来控制服务的启动和停止。

新建Windows窗体应用程序项目My ServiceClient, 新建My Service Client.cs, 添加2个按钮btn Start Service和btn Stop Service, 界面设计如图1所示。

首先声明服务已经安装标记private bool bol Service Installed=false;, 然后为窗体Load事件和两个按钮的Click事件添加代码:

编译生成并运行My Service Client.exe, 如果安装My Service服务, 客户端正常运行, 可以通过“启动服务”和“停止服务”按钮控制服务的启动和停止;否则如果未安装My Service服务, 客户端运行报错, 弹出消息对话框提示“服务尚未安装:在计算机“.”上没有找到服务My Service。”。当然也可以通过Notifyicon控件将窗口最小化到系统托盘。

3 结束语

Windows服务是独立于登录用户而工作的Windows应用程序, 同时也可以服务于所有的进程, 从而以一种服务的形式存在。编写Windows服务要使用很多Windows操作系统的核心功能, 微软.NET框架很好地封装了这些技术细节, 可以非常方便地编写Windows服务。本文讨论了Windows服务的作用和构成, 重点研究了.NET平台下利用Visual C#开发Windows服务程序的过程。

参考文献

[1]张会铭, 雷志华.基于Windows服务的网口与串口通信软件设计[J].微计算机信息, 2009, 25 (3) :114-115.

[2]杨文旦, 张智斌, 张毓赟.利用Windows服务和AD实现资源的动态管理[J].福建电脑, 2008 (2) :160-161.

[3]郝晶, 李秀平.论Windows服务技术在证券核算信息系统中的应用[J].信息技术与信息化, 2008 (4) :74-75.

[4]胡俊敏.利用Windows服务实现数据库数据监控[J].电脑知识与技术, 2009, 5 (36) :10457-10458.

[5]曹光忠.基于Windows服务的Web服务安全构件的设计[J].网络安全技术与应用, 2009 (5) :21-23.

Windows服务 篇9

FTP即为文件传输协议, 同时也是TCP/IP网络中的一个重要的实时的联机服务, Internet用户和局域网内部可以通过FTP实现计算机之间的文件传输, 且FTP可以传送多种类型的文件, 如图像、声音、压缩文件、Word文件等。

2 问题提出

日常生活中, FTP服务能给用户带来很大的方便, 不论是在局域网内部还是在Internet, 都能实现主机之间的文件传输, 而且适应于大容量文件的传输, FTP服务一般要结合用户及密码实现, 但是如果没有对用户的权限进行控制, 将会存在很大的安全隐患, 如上传的文件被别的用户删除、修改、抄袭等情况。因此, 如何为不同的用户指定专属文件夹进行文件上传下载操作, 上述问题便能得到解决。

3 问题解决过程

针对上面提出的问题, 可以使用FTP服务的特定功能——隔离用户模式的FTP服务。Windows Server 2003系统包含的FTP组件具有隔离用户功能, FTP站点配置成隔离用户模式后可以使用户成功登录到属于自己的目录中, 不具备查看或修改其他用户目录的功能。Windows Server 2003系统下, 隔离用户模式的FTP站点对目录名称和结构有一定的要求:首先必须在NTFS分区中创建FTP站点的主目录, 然后在主目录中创建一个名为LocalUser的子目录, 最后在LocalUser文件夹下创建和用户名称相一致的子文件夹和一个名为Public的子文件夹。要实现隔离用户模式的FTP站点, 需要在FTP服务器中创建多个用户帐号, 这些用户帐号将用于登录FTP站点。创建隔离用户模式FTP站点的具体过程如下:

(1) 通过IIS创建FTP站点。

在IIS下, 右键单击FTP站点, 点击“新建”→“FTP站点”, 按照向导完成设置, 在设置过程中有一点要强调的是选择“隔离用户”模式。如图1所示。

(2) 创建Windows用户和组。现以三个用户为例, TOM、JACK、SALLY, 三个用户均可以在“管理工具”→“计算机管理”→“本地用户和组”下创建。如图2所示。

(3) 设置FTP站点的主目录。隔离用户模式的FTP站点主目录一定要设置在NTFS格式的分区内。如D:myftp。假设现在要对上述三个用户提供服务, 需要在主目录下创建LocalUser子目录, 然后再在LocalUser子目录下创建三个子目录, 分别为TOM、JACK、SALLY, 注意子目录名称要和用户名相同 (如果需要提供匿名访问, 可以创建public子目录) 。如图3所示。

(4) 取消FTP站点“允许匿名访问”的功能。鼠标右键单击第一步中创建的FTP站点, 点击“属性”→“安全帐户”, 将“允许匿名访问”前面的勾去掉, 这样, 在登录FTP服务器时, 必须输入用户的帐号和密码。

(5) 设置文件夹的访问权限

在登录FTP服务器时, 如果用户名与主目录中的LocalUser下的子目录名不同, 则登录进去的用户看到的是整个主目录下的内容, 也就是说可以浏览所有的子目录。因此, 必须对主目录下的子目录设置访问许可, 限制非授权用户的访问。在windows2003下, 文件夹的访问许可分为读取、写入、修改、读取和运行、列出文件夹目录、完全控制几种类型。可以将每个子目录只针对专属用户设置成“完全控制”。例如将JACK子文件夹针对JACK用户设置“完全控制”权限, 方法为:鼠标右键单击JACK子文件夹, 在弹出的菜单中选择“属性”, 在属性选项中针对JACK用户完成“完全控制”权限设置。设置好以后, 其他用户无法访问JACK子文件夹, 以保证用户专属文件夹的安全。

至此, 所有配置完成。JACK、TOM、SALLY三个用户通过FTP都只能操作自己的目录, 包括文件的上传、下载、修改等。

4 结论

隔离用户模式的FTP服务配置相比普通FTP服务要复杂一些, 但是配置过程并不麻烦, 且可以广泛应用到日常生活中, 如学校要求学生通过网络提交作业或其它材料, 要保证学生作业的提交, 又要防止相互拷贝。隔离用户模式的FTP服务是最佳选择, 既实现了文件的传输, 又解决了很大一部分安全隐患。

参考文献

[1]罗忠.在Windows Server 2003中配置隔离用户FTP服务器[J].计算机光盘软件与应用2013 (15)

[2]陈景亮.网络操作系统——Windows Server 2003配置与管理[M].北京:人民邮电出版社.2011

[3]石志国.计算机网络安全教程[M].北京:清华大学出版社.

Windows服务 篇10

在小型、零星或分散的多媒体教室里, 如果吊装投影机后, 再配置一套多媒体教室设备网络集成中央控制系统 (简称网络中控) 显得有些多余。因为网络中控的主要控制对象是投影机, 是围绕投影机服务而实现多媒体教室设备的集成控制。不过投影机已经具备了信号源的切换功能, 与其连接的计算机又有网络和串口资源, 而且网络中控还必须占用一个目前网络资源紧张的IP地址。

为了充分利用投影机和计算机自有的硬件软件资源, 这里使用Microsoft Visual Studio 2005[1]集成开发工具和.NET 2.0框架, 采用C#编程语言, 提出一种既能在运行时不需用户交户的窗口界面、不与其它应用进程发生冲突, 又能实现投影机的远程冷启动开机和延时关机, 基于网络、Windows服务[2]和串口的投影机远程控制“零成本”解决方案。

1 关键技术的实现

1.1 计算机Windows服务技术特征

一个计算机Windows服务程序[2,3]是没有Windows窗口界面的后台运行程序, 是在Windows操作系统下不要求用户交互而能在后台运行特定功能的可执行应用程序。对于自动启动的Windows服务程序, 在Windows启动或是重启之后, 用户登录之前就开始执行, 随Windows系统关闭而最后停止。Windows服务程序的应用范围很广, 典型的Windows服务程序包含硬件控制、应用程序监视、系统级应用、诊断、报告、Web和文件系统服务等功能。

Windows服务应用程序的启动由Windows服务控制管理器 (Service Control Manager, SCM) 完成, 而SCM通过维护数据库对已经安装到系统的所有服务和驱动程序进行统一而安全的控制和管理, 是一个远程进程调用服务器, 在Windows操作系统导入时自动启动。Windows服务分为服务应用程序启动、服务程序监控及运行和服务程序安装三个部分。这三部分通过安装程序组合为一个完整的.exe文件。

实现投影机的远程控制, 开发用户主要精力放在网络与串口通信协议及程序设计上。与投影机连接的计算机设置为服务器端, 由服务器端的网络与串口通信程序转发客户端发送的控制信号实现对投影机控制, 或作为返回投影机的应答信号。显然, 计算机只是数据信号转发的硬件软件中介, 网络与串口通信软件只能在计算机的Windows操作系统后台进行, 即Windows服务承担此特殊任务。这是实现硬件控制和应用程序监视, 并以软件设计为主的解决方案。.NET框架简化了Windows服务程序的创建和控制过程, 其中启动函数OnStart () 和关闭函数OnClose () 都是Windows服务开发重点。

1.2 网络数据帧与串口帧的通信协议设计

为了在计算机启动后立即监听网络, 及时转发客户端发来的控制信号到投影机, 使投影机实现相应的动作, 则计算机首先必须实现基于Windows服务的网络和串口的转换协议, 定义图1所示网络数据帧和串口数据帧格式。服务器和客户端都以网络数据帧来通信, 网络数据帧包含IP头、TCP头和若干串口数据帧。由于服务器端的计算机可能要使用多个串口控制嵌入式设备, 同时因不同厂家生产投影机的串口波特率、效验位、数据位、停止位等都不一致。无法确定所有投影机的串口设置, 串口帧除了串口数据 (N位) 外, 还需要在串口数据前加串口号 (1位) 、串口设置 (1位) 。为了编程方便, 设定统一串口帧长度, 对于不够长度的, 以填充位 (为0) 来补齐。在允许网络数据帧最大长度的情况下, 可以一个网络数据帧包含若干个串口数据帧, 各个串口数据帧以串口帧头和串口帧尾区分开。

1.3 网络与串口通信软件设计

由上面论述可知, 与投影机连接的计算机设置为服务器端。其软件设计[4,5]采用客户机/服务器 (C/S) 模型, 与远程客户端实现网络通信, 都要建立通信网络套接字Socket对象, 以后服务器端和客户端通过这个套接字进行网络通信。.NET 2.0提供了SerialPort串口组件, 以完成与投影机或其他嵌入式设备的串口数据信号转发。

在服务器端, 基于计算机Windows服务的关键程序是网络与串口通信程序设计, 网络与串口通信主程序流程图如图2所示。服务控制管理器SCM在Windows系统启动后就调用网络与串口通信程序的OnStart () 函数。在OnStart () 函数里建立新的线程, 并建立新的Socket对象, 使用bind () 函数绑定本地计算机的IP地址和协议端口, 通过listen () 函数监听该协议端口。为了提高计算机的运行效率, 采用非阻塞异步Socket编程。

网络侦听到新的连接后, 就建立新线程并生成新的Socket对象, 原线程继续侦听网络, 新的Socket对象与客户端的Socket对象建立连接, 并接收客户端发来的网络数据帧。服务器端Socket对象收到网络数据帧后, 解析出串口数据帧, 并读出串口号和串口设置, 根据串口号初始化本地计算机的SerialPort串口组件, 如波特率、停止位、数据长度、握手连接等。以SerialPort组件的Open () 方法打开相应的串口;把从网络数据帧解析出的串口数据, 用SerialPort组件的Write () 方法发送出去, 以控制投影机的相应动作;然后侦听正使用的串口资源, 并通过SerialPort组件的异步方式Read () 方法读入返回的应答信号。等待规定毫秒时间延时后, 读入串口接收缓存器, 如有返回的串口数据, 就把返回的串口数据加上IP头, 与TCP封装成网络数据帧, 按接收到的客户端IP地址发送出去。如在规定时间里没有返回串口数据, 表明外界嵌入式设备的串口资源有故障, 就生成失败串口数据封装网络数据帧发回到原先连接的客户端。最后关闭正使用的Socket对象和串口资源, 原Socket对象同时继续网络侦听等待新的客户端连接。Windows系统关闭时, Windows服务控制管理SCM就关闭网络与串口的通信程序, 从而退出Windows服务系统后台运行。

2 投影机远程控制案例

2.1 “零成本”解决方案

根据上述的网络、Windows服务和串口远程控制开发流程, 可以使设计不再使用网络中控硬件, 但具备网络中控的网络与串口通信协议功能, 以“零成本”方式[6,7]实现投影机远程控制。设计如图3所示的基于网络、Windows服务与串口通信应用。

整个项目系统中有4个信号源:计算机数据信号、便携机数据信号、影碟机视频信号、录像机视频信号, 全部由投影机实现信号切换。控制投影机开机关机及信号源切换控制, 由其串口与计算机的串口一连接。根据投影机不同的串口设置, 客户端发送的串口数据帧设置与计算机、投影机的串口设置相一致。计算机的串口二与电动屏幕的串口连接 (电动屏幕通过一个小型AVR单片机[8]控制的两个继电器来实现电动屏幕的升、降和停止, AVR单片机有一个全双工串口) , 同样串口数据帧设置也与电动屏幕的串口设置相一致。客户端以网络套接字Socket对象发送或接收网络数据帧, 根据远程投影机或电动屏幕的串口设置发送串口号和相应串口设置, 并由若干串口控制数据代码组成符合规定的串口数据帧, 再按TCP/IP协议组成网络数据帧, 实现基于网络、Windows服务和串口的投影机远程控制。

2.2 投影机远程冷启动开机和延时关机

在没有网络中控的情况下, 如果要实现投影机的远程冷启动开机和延时关机[9,10]控制。首先要实现对投影机所连接的计算机进行远程冷启动开机 (唤醒功能) , 并能通过计算机的串口资源控制投影机的冷启动开机和延时关机。计算机的硬件如主板、网卡等都要符合网络开机唤醒功能设置;计算机的软件采用开机后即可自动运行的Windows服务, 以实现网络与串口的数据协议转换。

在主控客户端确定需要唤醒远程投影机所连接计算机时, 客户端通过Socket广播发送相应含有网络唤醒数据帧的数据包给网络中的计算机。当需要唤醒的计算机控制芯片发现数据包内包含本网卡的媒体访问控制 (Media Access Control, MAC) 地址信息的网络唤醒数据帧后, 就立刻通过网络唤醒 (Wake on Lan, WoL) 连接线向计算机发出开机信号, 通知主板开机。在网络中, 当计算机处于关机状态时, IP地址和计算机名字都不能识别机器的身份, 惟一能识别其身份的只有它所带网卡的物理地址, 即MAC地址。每块网卡的地址是惟一的, 也就是说网卡的MAC 地址可以用来惟一地标识网络上的某台计算机。

网络唤醒数据帧的格式为连续6 B的FF和连续重复16次的MAC地址。若要唤醒电脑网卡的MAC地址00-DF-1E-32-E7-CD, 则其对应的网络唤醒数据帧如图4所示。

对于实现投影机的远程关机, 客户端只需被控计算机的管理员账号和密码, 就能控制或者进入被控计算机的操作系统。其实现原理是视窗管理规范 (Windows Management Instrumentation, WMI) [11]。通过WMI为客户端用户提供通用访问管理信息, 设置客户端在其本地计算机读取/写入/执行的权限, 也包括关机设置。当客户端发出远程关机命令时, 被控计算机通过WMI确认客户端用户使用权限, 使用上面所述的Windows服务, 实现网络数据帧到串口数据帧的协议转换, 并通过计算机串口向投影机发送延时关机信号。投影机延时关机完成后, 根据客户端的要求, 被控计算机也可随即关闭Windows服务, 并自动关机, 最后整个系统进入远程冷启动开机的功能。

3 结 语

利用基于网络、Windows服务和串口的数据通信技术, 通过计算机作为中介, 实现了对投影机远程冷启动开机和延时关机;并使用计算机网络套接字Socket和SerialPort串口控件, 完成了在无网络中控硬件支持的情况下, 利用本地计算机网络资源和串口资源, 以及投影机本身信号源切换资源, 实现对投影机的“零成本”远程控制。同时基于网络、Windows 服务和串口的数

据通信有更多的用途, 在只有计算机而又要实现对被控设备进行网络远程控制时, 就要应用到这种技术。

参考文献

[1]邹建峰, 周山峰, 项细威.C#企业级开发案例精解[M].北京:人民邮电出版社, 2006.

[2]颜听, 李腊元.Windows的服务质量机制及其实现[J].计算机应用研究, 2004 (5) :241, 257.

[3]廖乐林.通用并发客户服务程序设计技术研究[J].科技促进发展, 2007, 31 (6) :8-10.

[4]白日东, 范悦.基于Windows Sockets的通信应用程序开发[J].吉林工程技术师范学院学报, 2007, 23 (12) :60-61.

[5]华泽玺, 王长林, 尹忠科, 等.基于主动发送/串口监听模式的实时数据采集[J].西南交通大学学报, 2005, 40 (1) :35-38.

[6]薛红.在金盘系统中实现基于.NET和Windows服务的超期借阅电子邮件催还服务[J].现代图书情报技术, 2006 (6) :80-84.

[7]田先亮, 刘文苹.Windows服务在计算机房管理中的应用[J].中国科技信息, 2007 (12) :109-110.

[8]马潮.AVR单片机嵌入式系统原理与应用实践[M].北京:北京航空航天大学出版社, 2007.

[9]彭建业, 王海峰.基于VB 6.0的计算机远程关机的设计与实现[J].现代电子技术, 2007, 30 (22) :85-86.

[10]陆云龙, 张会铭, 雷志华.多媒体教室设备远程冷启动开机和次序延时关机的设计[J].中国现代教育装备, 2007 (8) :51-53.

Windows服务 篇11

尼克逊去年曾解释微软发布Windows 8.1的计划,但当时微软在“秘密”开发Windows 10。现在,微软员工已经能毫无顾忌地谈论Windows 10的未来更新计划,因为微软没有再秘密开发新版本的Windows,Windows 10是微软最后的Windows版本。尽管乍一听起来微软似乎要放弃Windows,未来不再开发新版本,但实际情况要更复杂一些。Windows的未来在于“Windows即服务”。

微软一直在讨论Windows即服务的理念,但从未解释这一理念与未来版本Windows的关系,可能的原因是,在可预期的未来微软将不再发布新版本Windows。微软已经改变了开发和发布Windows的方式,第一个成果就是Windows 10。Windows将不再有新版本问世,取而代之的将是定期的改进和更新。得以采用这种方式的部分原因是,把开始菜单和内置应用等操作系统部件分解为独立部分,各个部件可以独立更新,组成完整的Windows核心操作系统。

尽管Windows 10将于未来数月后发布,微软已经发布了其中的多款应用和服务。微软已经发布了测试版本的Windows10,Xbox和Mail的设计目标是每月定期更新,它们更像是移动应用,而非像过去那样每隔数年发布一个新版本的传统软件。

Windows服务 篇12

当前,移动互联网已成为了人们主要的获取信息的主要渠道。在移动互联网上主要有两种方式获取信息。 一是通过各种浏览器来浏览网站内容。二是通过手机上安装的app来获得来自服务器上的数据,如QQ和微信。这两种通讯方式都需要服务器端程序的支持。而衡量服务器端程序性能的一个重要指标就是并发量,也就是同时可以接入客户端的数量,本文讨论如何在windows系统下最性能的服务器端程序模型完成端口模型。

2 具体内容

首先,我们讲到同步和异步两个概念。

同步模式是比较早期的模式,在Windows套接字创建时,默认工作在同步模式下。同步模式就是需要服务器完成收发后才可以做下一步的操作,这样会大大降低程序的运行性能。所以高性能的服务器端程序多数使用异步模式。异步模式是指服务器程序不等当前I/O是否完成,就马上执行下一个任务,并不等待程序执行结果或程序本身出现错误退出。这样就大大提高了程序性能。举个例子来说,一个公司的物流公司的经理给一个快递员下达快递任务后,等待这个快递员送完快递后再给第二个快递员下达新任务。如果需要用1 分钟的时间把下单的内容通知给快递员,且第一个快递员用时完成任务1小时,第二个快递员也用时1小时完成任务,则一共用时2小时2分钟,这样的模式就是同步模式。如果经理给第一个快递员下完任务后不等待快递员执行任务的完成就直接给下一个快递员下达第二个任务,这时用时就只有2 分钟,仅仅是下单内容通知给快递员的时间,这样的模式就是异步模式。很明显,采用异步模式的程序大大提高了性能。

第二,我们讲到阻塞和非阻塞两个概念

阻塞模式就是指本线程结果返回之前,线程会被挂起该线程进入非可执行状态,CPU不给线程分配时间片,即线程暂停运行,进入待机状态。函数只会有执行结果或者出错码生成以后才会做下一步的操作。而非阻塞模式指的是不等待执行结果或出错码的出现不会直接进入睡眠状态而是马上执行下一步的操作,此时线程本身还是处在激活状态。同样用上面经理-快递员的例子来说明,阻塞模式是指经理在下达指令后一直等待快递员返回执行情况。在此期间不做任何事情,直到快递员返回唤醒经理,再进行下一个命令。而非阻塞模式指的是经理下达指令后在等待返回执行情况期间可以做其他事情,比例不停打电话给快递员询问执行情况等。

第三,我们来讲到IOCP的工作原理和编写过程。

IOCP是Windows下高性能的可伸展的I/O模型,是最高性能的模型,与其性能相当的模型都没有。IOCP全称Input/Output Completion Port,译为I/O完成端口。首先我们来说为什么Windows下要使用该模型。我们知道在网络上客户端与服务器发送和接收数据(即网络I/O操作)相对于CPU而言要花费大的时间,两者的差距可能有数几千倍之多。显然如果要CPU和网络I/O操作采用同步模式的话即让CPU等待网络I/O完成收发数据之后再做下一步的操作,对于整个系统来说是一种巨大的浪费。所以为了提高效率,让系统不等待结果而是直接做下一条操作,只是让I/O操作完成之后再通过回调函数来通知系统收发执行情况。这也是为什么叫做完成端口的原因。IOCP其实上是一个线程池。这个线程池的核心工作是去调用I/O操作完成时的回调函数。IOCP可以想象为一个包含网络通信操作即接收新客户端的加入,发送数据到客户端,接收客户端上交的数据的一个信息队列,它会把上述网络操作即接收客户端接入请求,发送数据和接收数据操作执行的结果存放在这个队列里。我们可以读出所有的网络操作的结果以及出错码。

具体实现过程:

第一步:创建一个完成端口。使用HANDLE完成端口=Create Io Completion Port(参数1,参数2,参数3,参数4);参数4 代表的是程序可以同时生成线程的最大数量。人们很自然地想到在一个CPU上运行的线程数量是越多越好。但是如果线程太多的话,系统要在不同的线程上不断地切换上下文,这样不但不能加大CPU的能力,反而会降低CPU的实际使用效率。所以我在这里只是设置为零,也就是说我们只需要让一个CPU上运行一个线程就好。

第二步:创建n个I/O操作线程。业内一般控制n的数量为CPU数量的2 倍加2,如果是4 核CPU,就是4*2+2 个即创建10个I/O操作线程。因为在网络上接收客户端数据和发送数据到客户端都是比较需要时间的事情,而在CPU上的线程操作是比较高速的,两者的差距可能是网络I/O操作用时几千ms而CPU一个线程只是用几个ms而已,所以只需要几个I/O操作线程就可以满足一台服务器上几万个客户端的accept,send,rec执行操作。

I/O操作线程用来处理上述讲到的接收客户端接入请求,发送数据和接收数据操作,也是处理我们I/O网络事件的线程。那么我们就要首先获取系统中CPU的数量以便确定I/O操作线程的具体数量。

使用SYSTEM_INFO, Get System Info来取得Windows系统信息,在Get System Info中的就有CPU的核心数量,然后如上所述生成的I/O操作线程为CPU核心数量的两倍加二。

然后:把用于监听的本地套接字绑定到完成端口上面并在程序设置的网络端口上开始监听。绑定方法为使用Create IoCompletion Port()函数。注意这里和创建完成端口的Windows API完全相同。

第三步:I/O操作线程不停地取出已有的发送数据和接收数据的结果,这些结果都存放在完成端口上,取出这些结果的函数是阻塞函数,也就是说不会被打断,除非出错。

第四步:程序的主线程里只做等待客户端的套接字连接的工作。这里可以使用Accpet()和Accept Ex()两个函数,Accept Ex是微软专门在Windows操作系统里面提供的扩展函数,使用重叠I/O机制。在Windows里的异步I/O操作都要使用重叠I/O机制。重叠I/O机制可以简单地理解为含有这种机制的操作方法和系统里别的操作是异步的,不需要和别的操作有任何联系。

扩展函数Accept Ex()的定义

BOOL Accept Ex(

生成套接字参数1, //生成用于本地监听的套接字

生成套接字参数2, //用于接受连接的socket,事先建好的,有客户端连接进来时直接把这个Socket拿给它用的那个,是Accept Ex高性能的关键所在。一般来说,根据业务的多少来确定事先准备socket的数理。

PVOID参数3, //这个为缓冲区,包含了三个信息:一是客户端发来的第一组数据,二是服务器的地址,三是客户端的地址。

DWORD参数4, //参数3中用于存放数据的空间大小。如果为零,则Accept时将不会等待数据到来,而直接返回,如果此参数不为0,那么一定得等接收到数据了才会返回。

DWORD参数5, //服务器地址信息空间的大小。

DWORD参数6,//接入客户端地址的信息空间大小。

LPDWORD参数7,//可不管理

LPOVERLAPPED参数8 //重叠I/O操作所要用到的重叠结构);

第五步:这时主线程和I/O操作线程开始分工工作,主线程处理新接入的客户端工作,就是接入连接和安排到完成端口中去。使用accept()和accept Ex()函数接入新的客户端,使用Create Io Completion Port()安排到已有的完成端口中去,同时可以在对新接入的客户端进行读写操作。

主线程一直在等待新的客户端的接入,这里采用的是阻塞模式,I/O操作线程则一直在做网络I/O操作,I/O操作线程采用的是异步非阻塞模式,只是给操作系统发命令,让操作系统去完成数据的收发工作,I/O操作线程这时并不等待系统是否完成收发工作,而是只不停的发命令,就好像上面提到的快递员-经理模式一样,这里的I/O操作线程就是经理,而做具体工作的操作系统就是快递员。经理只发命令,不监督快递员的具体工作,只是关心工作执行的结果。

在操作系统完成收发数据后,把结果发送到完成端口上来,这样完成端口上就有了所有已有客户端的收发数据执行结果。

而I/O操作线程只要读出结果就可以了,以此循环。

简单地概括完成端口模型为:

完成端口由三个主体构成,第一主线程,第二I/O操作线程,第三操作系统。首先由主线程生成一个完成端口,初始化监听套接字和生成两倍CPU数量加2 个的I/O操作线程,之后主线程的主要工作是接入新的客户端。工作线程负责命令操作系统去接收和发送数据,操作系统负责具体的收发数据工作,并把执行结果发送到完成端口上。I/O操作线程不断的读取完成端口上的收发执行结果,以确定下一步的操作,以此循环。

最后提到关闭完成端口,由于I/O操作线程是采用阻塞模式一直不停地读取操作系统放在完成端口上的执行结果,所以没有新的收发数据工作执行结果,完成端口则进入死循环中不能退出,所有我们要采用发信息的方式来使完成端口关闭。

操作系统发送完成端口退出信息的API为Post QueuedCompletion Status,实际上就是发送一个特定的网络事件给I/O操作线程,让完成端口自行退出。

代码:

摘要:本文讨论在Windows环境下,如何开发出一种基于TCP协议的高并发服务器程序。本文谈论Windows下套接字I/O模型,同步和异步I/O,阻塞和非阻塞模式,主要谈论IOCP通讯模型的原理和开发过程。

关键词:高并发,服务器端程序开发,IOCP

参考文献

[1]王艳平,张越.Windows网络与通信程序设计[M].人民邮电出版社,2013.

[2]张越.Visual C++网络程序设计实例详解[M].人民邮电出版社,2013.

[3]Jeffrey Richter.Windows核心编程Windows via C/C++[M].清华大学出版社,2011.

上一篇:危机公关处理下一篇:随机非结构化