




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、现如今,随着我国高校的快速发展,各个大学早已朝着综合大学的发展,所开设的学科、专业以及学院都如迅猛发展,尤其是扩招以来,各个大学的在校学生数量猛增,在这种情况,以前学校的教务排课系统已远远不能满足现在这个快速发展的现状,以前的那种手动排课或者简单的无纸化的系统,已经不能满足现在排课的需求,很容易出现纰漏,导致正常的教学活动不能顺畅进行。本文正是基于目前这种现状,利用目前比较流行的B/S模式,流行的关系型数据库MySql以及应用非常普遍的PHP技术,对本次高校智能排课系统进行设计与实现。本次主要是利用了比较先进的流行的排课算法对本系统高校智能排课进行自动排课。本系统大体的思路是,首先对各种基本资
2、料进行管理,并且对各个用户(教师、教务人员、学生等)进行用户管理,并且对其进行角色管理;然后设置了对所有排课信息进行管理的模块,进一步对所有的排课信息进行详细管理,在这个基础上,利用先进的排课算法对这些信息进行排课操作,最后,可通过课程表信息发布与查询模块对智能排课信息进行查询与下载,并可以以Excel的形式进行下载与保存。本次对以上五个模块从需求分析到系统设计再到系统实现进行了详细的分析与阐述,并且在最后对各个模块进行了详细的测试。通过试用,本次高校智能排课系统达到了预期的目标。 关键字:智能;排课系统;PHP;数据库AbstractNow, with the rapid developme
3、nt of China's colleges and universities, each university had towards the development of universities, the creation of disciplines, as well as professional colleges, such as the rapid development, especially since enrollment, universities in the number of school students soared in this case, the
4、previous school courses arranging system can not meet the rapid development of the current situation now, before the kind of manual or simply arranging paperless system has been unable to meet the current needs of arranging easily flaws, leading to the normal teaching activities can not be carried o
5、ut smoothly.This article is based on the current situation, the use of current popular B / S mode, the popular relational database MySql and PHP application very common technique, this of Intelligent Scheduling System Design and realization. The main advantage of the more advanced popular Scheduling
6、 Algorithm of the system of Intelligent Scheduling automatic Arrangement. The idea is that in general, the first of all the basic data management, and individual users (teachers, academic staff, students, etc.) for user management, and its role in management; then set up all the arranging informatio
7、n management module timetable for all further detailed management information, on this basis, the use of advanced algorithms for arranging this information arranging operation Finally, publication and query module smart Scheduling information through curriculum information Discover and download, and
8、 can be downloaded as Excel and save. The above five modules from requirements analysis to system design to system implementation carried out a detailed analysis and forth, and at the end of each module detailed testing.Through the trial, this system of Intelligent Scheduling to achieve the desired
9、objectives.Key words:Intelligent; Course Scheduling System; PHP; Database第一章 绪 论1.1 背景分析 随着科学技术的不断发展,各个行业信息化、科学化不断推进。高校该如何才能提高办学的效率。这是每个高校都会面临的,也是每个高校需要迫切解决的问题。而采用信息化手段来代替传统的教学管理模式是一个重要的途径。 高校的信息化管理和办公自动化的不断推进,教务工作也逐渐实现办公自动化,新学期课程表的安排工作对指导整个学期日常安排是否妥当、对教学资源的利用是否合理有着至关重要的作用。如果采取传统的人工排课方法容易导致课程冲突、课程重复
10、、课程错漏等各种问题,而且传统的人工排课方法的任务非常重和教务人员的效率非常低下,当课程安排上出现错误要更改的时候,教务人员则需要花费大量的时间协调老师、班级、课程、教室等各种因素。随着高校规模的不断扩大,学生人数不断增加,人工排课的难度就呈几何级数增大。 而高校通用排课系统正是为了减轻教务人员负担,减少课程安排的出错率,降低修改课程表难度,提高教学资源的合理利用率,从而真正意义上实现教务工作自动化,解决排课这个大难问题的教务办公软件。目前国内发展情况 国内多家专业开发教学管理信息系统的企业,如杭州正方公司、湖南强智公司、湖南青果公司等,在其教务管理产品中均实现了自动排课功能,但由于软件设计局
11、限,对合班课程、教师兼课、教室交叉重复使用等复杂的情况应用效果不十分理想。在实际应用中,主要使用其排课冲突检测功能进行计算机辅助排课。国内软件市场上也出现了很多通用型的排课软件,如“51智能排课”,“启智达排课”,“终级排课”等等,这些通用软件可以解决简单的通用排课问题,适合学科门类和课程门数较单一的学校,不适合高校教学管理应用,不能满足高校多学科、专业、以及课程教学的特殊要求,比如完全学分制下课程教学班的排课问题等。通过对国内部分高校的调研和考察,了解到目前高校排课主要是利用人机交互式的计算机软件辅助排课方式,这种方式能够随时检测排课冲突,但在排课效率方面没有什么优势。也有有少数高校自行研发
12、了自动排课系统,但通常这些排课软件依赖于各院校自身的实际需求和管理模式,不会考虑其他高校的需要,因此它们的数据共享性和扩展性不强,因此没有完全适用于各高校排课的通用系统。1.3 课题研究内容本课题在充分了解和熟悉教务排课环节的基础上,通过对排课的要素、制约条件的需求分析,建立基于校园网浏览器端/服务器(B/S)结构自动排课系统的业务模型,对系统进行概要设计、详细设计和数据库设计,结合已知的排课算法,让教务管理系统扩展完善自动排课功能,使教务人员摆脱繁琐、机械的手工排课工作,达到提高排课效率的目的。系统的设计与实现基于微软Windows server2000操作系统软件平台,采用MySql6.0
13、数据库系统作为数据库开发平台,前端数据库开发工具采用ThinkPhp程序设计语言。本人的主要工作如下:(1)分析分析了本学校基于完全学分制教学管理模式下排课的要素和制约条件,提出排课问题的难点和目标,通过对排课过程的分析,构建自动排课系统的逻辑模型;(2)以本人所在单位的实际情况为背景,对排课问题进行需求分析,建立系统业务模型,分析排课流程,给出排课系统的功能模块框图;(3)使用已知的排课算法,使排课效率和质量得到提高;(4)进行系统详细设计、数据库设计,编程实现自动排课系统全部功能,完成软件开发。对实际的排课问题进行测试,分析评估排课结果的质量和性能并论述系统的可行性和实用性。通过对以上方面
14、的研究,完成高校自动排课系统的设计与实现。1.4 本论文的章节结构本论文立足北京联合大学生物化学工程学院完全学分制教务管理需求特点,通过充分的分析和研究,设计并实现了适合学院需求的自动排课系统。论文章节结构如下:第一章绪论,主要介绍了项目的研究背景、意义和国内外发展、研究和应用现状,同时也对本人的主要工作做了简要介绍。第二章自动排课系统需求分析,讨论了在完全学分制下,学院对排课的业务特点及功能的需求,构建自动排课系统的逻辑模型。第三章自动排课算法的设计,对多种排课算法进行分析比较,结合实际提出改进并优化的自动排课算法。第四章自动排课系统的设计,对自动排课系统进行总体方案设计、系统详细设计,重点
15、介绍了系统的数据库设计。第五章自动排课系统的实现,对排课系统各功能模块的具体实现过程进行了阐述。对排课系统的实践应用进行测试,验证自动排课系统的应用效果,并对系统满足需求的程度进行分析。结论部分,提出对本系统的评价与展望。第二章 高校智能排课系统的关键技术2.1 数据库技术1、数据库的几个原则数据库设计需要遵循以下几个原则:一是,数据不仅要标准,同时还要一致。为了给数据交流及功能的实现提供方便,一方面,数据库的设计不仅要符合国家行业和江苏省地方标准及ITS行业的习惯性事实标准,另一方面,还必须要与数据库设计的软件行业标准相一致。在数据库的设计应考虑以前己建立系统的数据,这主要是由于之前的数据库
16、在与其他系统之间进行数据交换的时候具有一定的优势。二是,数据不仅完整,同时还要实用。在数据库设计中,我们不仅要考虑系统规模和实际需求,同时还要对工作的实际情况和实际应用特点进行全面的考虑和分析,在设计的过程中,为了保证数据的实用性,必须要遵循“先进性与实用性并重”的原则。数据库中的数据只有具备了完整性,才会具有准确性,其中通常情况下完整性是通过约束条件来控制的15。另外,在数据的选择中还具有一定的约束条件,约束条件可以检验进入数据库中的数据值,其目的主要是为了避免那些重复或冗余的数据进入数据库。在系统的设计中为了有效保证新建或修改后的数据能够遵循所定义的业务知识,可以对约束条件进行科学、合理的
17、利用。三是,数据必须要具有安全性的特点。对于整个信息系统来说,数据库不仅仅是其基础,同时也是其核心,因此必须要保证设计的安全性才能够为整个信息系统的运转提供条件。在设计的过程中,可以构建一个合理和有效的备份和恢复策略,这样,当数据库由于意外事故,例如人为因素或者天灾等因素而损坏数据库系统时,就可以利用这一恢复策略来在最短的时间内使数据库恢复。除此之外,如果能够很好的完善数据库访问的授权设计,那么我们就还能够有效的保证数据不被非法访问。四是,在数据库的设计中必须要全面考虑空间、属性、设施、模型数据的兼容性。鉴于此,交通事件管理数据库设计分为综合数据库设计、元数据设计和关联数据设计这三种类型。五是
18、,数据库必须要建立和完善分级管理机制16。用户根据访问系统的角色的不同可以分为系统管理用户、运行调度用户、运行浏览用户以及领导决策分析用户这几个类型,不同的角色访问数据的权限要具有差异,并且使用系统的功能也要具有一定的不同,从而实现对角色登陆的严格控制,进而实现数据的分级管理。六是,数据不仅独立,同时还要可扩展。独立性是数据库最基本的特点,只有具有独立性的数据库才能够独立的应用于程序中,并且还能使其自身的数据库的设计及其结构的变化不会对程序的运行造成影响17。另外,结合之前的成功经验,详细分析系统的需求,并根据业务的变化,要求在数据库的设计中要具有较强的扩展性,这样就能够使数据库系统在增加或者
19、减少其他需求或者应用时能够保持一定的稳定性,不至于发生太大的变动。2、MySQL数据库MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。它主要通过关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权
20、政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。 2.2 apache(Web服务器)1、发展历程Apache 起初由伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发。此后,Apache 被开放源代码团体的成员不断的发展和加强。Apache 服务器拥有牢靠可信的美誉,已用在超过半数的因特网站中特别是几乎所有最热门和访问量最大的网站。Apache最开始是Netscape网页服务器之外的开放源代码选择。后来它开始在
21、功能和速度超越其他的基于Unix的HTTP服务器。1996年4月以来,Apache一直是Internet上最流行的HTTP服务器: 1999年5月它在 57% 的网页服务器上运行;到了2005年7月这个比例上升到了69%。在2005年11月的时候达到接近70%的市占率,不过随着拥有大量域名数量的主机域名商转换为微软IIS平台,Apache市占率近年来呈现些微下滑。而Google自己的网页服务器平台GWS推出后,加上Lighttpd这 个轻量化网页服务器软件使用的网站慢慢增加,反应在整体网页服务器市占率上,根据netcraft在2007年7月的最新统计数据,Apache的市占率已经降为52.65
22、%,8月时又滑落到50.92%。尽管如此,它仍旧是现阶段因特网市场上,市占率最高的网页服务器软件。广泛的解释是(也是最显而易见的):这个名字来自这么一个事实:当Apache在1995年初开发的时候,它是由当时最流行的HTTP服务器NCSA HTTPd 1.3 的代码修改而成的,因此是“一个修补的(a patchy)”服务器。然而在服务器官方网站的FAQ中是这么解释的:“Apache这个名字是为了纪念名为Apache(印地语)的美洲印第安人土著的一支,众所周知他们拥有高超的作战策略和无穷的耐性”。无论如何,Apache 2.x 分支不包含任何 NCSA 的代码。2、详细介绍Apache HTTP
23、 Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。Apache HTTP服务器是一个模块化的服务器,源于NCSAhttpd服务器,经过多次修改,成为世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的
24、读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达6
25、0%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。Apache的诞生极富有戏剧性。当NCSAWWW服务器项目停顿后,那些使用NCSAWWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。3、特性A
26、pacheweb服务器软件拥有以下特性:HTTPHTTP认证Perl处理模块代理服务器模块9.支持服务器端包含指令(SSI)Socket层(SSL)第三方模块可以支持JavaServlets2.2 PHP技术1、简介PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将
27、程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。2、发展历程PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。注意不是“Hypertext Preprocessor”的缩写,这种将名称放到定义中的写法被称作递归缩写。PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf为了要维护个人网页而制作的一个简单的用Perl语言
28、编写的程序。这些工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。后来又用C语言重新编写,包括可以访问数据库。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。在1995年以Personal Home Page Tools (PHP Tools) 开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档。并且发布了PHP1.0!在这的版本中,提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要求增加一些特性。比如循环语句和数组变量等等;在新的成员加入开发行列之后,R
29、asmus Lerdorf 在1995年6月8日将 PHP/FI 公开发布,希望可以透过社群来加速程序开发与寻找错误。这个发布的版本命名为 PHP 2,已经有 PHP 的一些雏型,像是类似 Perl的变量命名方式、表单处理功能、以及嵌入到 HTML 中执行的能力。程序语法上也类似 Perl,有较多的限制,不过更简单、更有弹性。PHP/FI加入了对MySQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年底,有15000个网站使用 PHP/FI。在1997年,任职于 Technion IIT公司的两个以色列程序设计师:Zeev Suraski 和 Andi Gutmans,重写了
30、PHP 的剖析器,成为 PHP 3 的基础。而 PHP 也在这个时候改称为PHP:Hypertext Preprocessor。经过几个月测试,开发团队在1997年11月发布了 PHP/FI 2。随后就开始 PHP 3 的开放测试,最后在1998年6月正式发布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 发布后开始改写PHP 的核心,这个在1999年发布的剖析器称为 Zend Engine,他们也在以色列的 Ramat Gan 成立了 Zend Technologies 来管理 PHP 的开发。在2000年5月22日,以Zend Engine 1.0为基
31、础的PHP 4正式发布,2004年7月13日则发布了PHP 5,PHP 5则使用了第二代的Zend Engine。PHP包含了许多新特色,像是强化的面向对象功能、引入PDO(PHP Data Objects,一个存取数据库的延伸函数库)、以及许多效能上的增强。PHP 4已经不会继续更新,以鼓励用户转移到PHP 5。2008年PHP 5成为了PHP唯一的有在开发的PHP版本。将来的PHP 5.3将会加入Late static binding和一些其他的功能强化。PHP 6 的开发也正在进行中,主要的改进有移除register_globals、magic quotes 和 Safe mode的功能
32、。PHP最新稳定版本:5.4.30(2013.6.26)PHP最新发布的正式版本:5.5.14(2014.6.24)PHP最新测试版本:5.6.0 RC2(2014.6.03)2013年6月20日,PHP开发团队自豪地宣布推出PHP 5.5.0。此版本包含了大量的新功能和bug修复。需要开发者特别注意的一点是不再支持 Windows XP 和 2003 系统。2014年10月16日,PHP开发团队宣布PHP 5.6.2可用。四安全相关的错误是固定在这个版本,包括修复cve-2014-3668,cve-2014-3669和cve-2014-3670。所有的PHP 5.6鼓励用户升级到这个版本。3
33、、其它特点数据连接:PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是绝佳的组合。自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。php编程技术可扩展性:就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。php编程技术面向对象:PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。php编程技术可伸缩性:传统上网页的交互作用
34、是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。php编程技术更多特点:PHP的开发者们为了更适合web编程,开发了许多外围的流行基库,这些库包含了更易用的层。利用PHP连接包括Oracle,MS- Access,Mysql在内的大部分数据库。可以在苍蝇上画图,编写程序下载或者显示e-mail。甚至可以完成网络相关的功能。最好的是,可以
35、选择你的PHP安装版本需要哪些功能。引用Nissan的Xterra的话来说就是PHP可以做到你想让它做到的一切而且无所不能!2.3 B/S架构介绍B/S(Browser/Server)结构即浏览器和服务器结构。B/S网络结构模式是基于Intranet的需求而出现并发展的。Intranet是应用TCP/1P协议建立的企事业单位内部专用网络,它采用诸如TCP/IP、HTTP、SMTP和HTML等Internet技术和标准,能为企事业单位内部交换信息提供服务。同时,它具有连接Internet的功能和防止外界入侵的安全措施。另一方而,由于数据库具有强大的数据存储和管理能力,并且能够动态地进行数据输入和
36、输出,如果把数据库应用于Internet上,不仅可以实现大量信息的网上发布,而且能够为广大用户提供动态的信息查询和数据处理服务,进而加强企事业单位内部部门之间、上级部门与下级部门之间、企事业单位员工之间、企事业单位与客户之间以及企事业单位与企事业单位之间的信息交流,降低企事业单位的日常工作成本,提高企事业单位的经济效益。B/S模式,是一种从传统的二层C/S模式发展起来的新的网络结构模式,其本质是三层及三层以上结构的C/S模式。在B/S模式中,客户端运行浏览器软件。浏览器以超文本形式向Web服务器提出访问数据库的要求,Web服务器接受客户端请求后,将这个请求转化为SQL语法,并交给数据库服务器,
37、数据库服务器得到请求后,验证其合法性,并进行数据处理,然后将处理后的结果返回Web服务器,Web服务器再一次将得到的所有结果进行转化,变成HTML文档形式,转发给客户端浏览器以友好的Web页面形式显示出来。B/S模式最大的优势是灵活性,任何时间、任何地点、任何系统,只要可以使用浏览器上网,就可以使用B/S系统的终端。其主要特点如下:1、系统开发、维护和升级的经济性对于大型的管理信息系统,软件开发、维护与升级的费用是非常高的,B/S模式所具有的框架结构可以大大节省这些费用,同时,B/S模式对前台客户机的要求并不高,可以避免盲目进行硬件升级造成的巨大浪费。2、B/S模式提供了一致的用户界面B/S模
38、式的应用软件都是基于Web浏览器的,这些浏览器的界面都很相似。对于无用户交互功能的页面,用户接触的界面都是一致的,从而可以降低软件的培训费用。3、B/S模式具有很强的开放性在B/S模式下,外部的用户亦可通过通用的浏览器进行访问。4、B/S模式的结构易于扩展由于Web的平台无关性,B/S模式结构可以任意扩展,可以从一台服务器、几个用户的工作组级扩展成为拥有成千上万用户的大型系统。5、B/S模式具有更强的信息系统集成性在B/S模式下,集成了解决企事业单位各种问题的服务,而非零散的单一功能的多系统模式,因而它能提供更高的工作效率。6、B/S模式提供灵活的信息交流和信息发布服务B/S模式借助Inter
39、net强大的信息发布与信息传送能力可以有效地解决企业、高等学校内部的大量不规则的信息交流。2.4 Socket技术2.4.1 Sockets介绍 Sockets具体说明使用Sockets Socket控件让你建立一个利用TCP/IP和有关的协议与其他系统进行通信的应用。还能够读和写通过它连接的其他机器,而不用担心实际的网络软件的相关细节。Sockets提供基于TCP/IP协议的连接。除此以外还能很好的工作,在其他相关的协议:例如Xerox Network System (XNS), Digital's DEC
40、160;net, or Novell's IPX/SPX 家族。C+ Builder提供你写网络服务器或客户应用程序去读和写其他的系统。一个服务或客户程序通常专注于一个单一的服务如超文本传送协议(HTTP)或文件传输协议(FTP)。使用Server sockets,一个应用程序可以提供这些服务中的一个去连接一个希望使用服务的客户程序。Client sockets允许一个应用使用这些服务中的一个去连接提供这个服务的服务应用。使用sockets去写应用程序,你必须理解下面这些知识: 服务工具当你需要写网络服
41、务或客户应用时,Sockets提供一种接合。对于许多服务,象HTTP 或 FTP,第三方服务商提供这些服务已经相当有效。有些甚至随着操作系统捆绑而来,以便不用你自己写。然而,当你想更多的控制服务的实现,如想让你的应用程序与网络通信更加紧密,或当没有一个服务能提供你特殊需要的服务时,你可能想建立你自己的服务或客户应用。例如,工作在分布式data sets时,你可能想为数据库写一层与其他系统通信的应用。想使用Sockets实现一个服务,你必须理解:1、服务协议在你写一个网络服务或客户程序前,你必须明白你的应用将提供或使用什么服务。你的网络应用必须支持许多服务的标准协议
42、。如果你为标准的服务例如HTTP,FTP写网络应用,或even finger or time,你必须先理解与其他系统通信所使用的协议。特殊服务细节你必须看提供的或使用的文档。如果你的应用程序提供一个新的服务与其他系统通信,第一步是为这个服务的服务端和客户端设计通信协议。什么信息将发送?如何整理这些信息?如何对这些信息进行编码?经常的,你的网络服务端或客户端应用程序要提供一层在网络软件和一个应用之间使用的服务。例如,一个HTTP服务站点在INternet与一个Web 服务应用之间为HTTP请求信息提供内容和应答。在你的网络应用(或客户应用)和网络软件之间S
43、ockets 提供一个接口。该接口在你的应用程序与应用间使用。你可以拷贝第三方服务商提供的标准API(例如ISAPI),或你可以设计和发布你自己的API。2、理解服务和端口许多标准服务都有关联的、指定的端口号。当 执行服务时,你可以为服务考虑一个端口号。如果你实现一个标准服务, Windows socket objects 提供一些方法让你为服务寻找端口号。如果提供一个新的服务,在基于Windows 95 或 NT机器上,你能够在文件Services中为你的服务指定一个相关联的端口号。设置Services
44、文件的更多信息请看微软 的Windows Sockets文档。 Socket连接的类型Socket连接基本可以分成三个不同的类型,他们可以反映出如何开始连接和什么是本地Socket 连接。这三个不同的类型分别是:1、客户端连接客户端连接是由本地系统的客户端socket和一个远程系统上的服务端Socket进行连接。客户端连接是由本地系统的客户端Socket开始。首先,由客户端Socket来描述它想连接到的服务端Socket. 然后由客户端socket查找服务端socket,如果查找到了服务器,就发出连接要求。服务端socket有可能无法正确的连接到客户端S
45、ocket。服务器sockets会形成一个客户端申请连接的队列,在他们能满足条件是自动进行连接。当服务端socket同意客户端的连接要求时,服务端socket就会向它准备连接的客户socket发送一个完整的描述,客户端就可以完成连接。2、倾听连接服务器socket不主动连接客户端,相反,他们形成了一个被动的“半连接“状态,听客户的请求。服务器 sockets形成一个连接请求队列,来储存它所接收到的连接请求。此队列记录客户连接请求,就像它们已经连接了似的。当服务器 sockets与客户连接请求相一致时,它就形成了一个新的sockets连接到客户端,所以这个监听连接可以保持打开
46、以便允许其他客户端请求。3. 服务端连接当倾听socket同意客户端发出的连接请求时,服务器端socket形成了服务器连接。当服务器同意连接时,要将一个完整的服务端socket描述发送给准备连接的客户端,以完成连接,当客户端接收到这个描述时,连接已被确认,连接完成。一旦连接到客户端的Socket完成,服务器连接就无法识别从客户端发来的连接。两端具有相同的接收相同事件类型的能力。只有倾听(listening)连接是根本不同的,它只有一个单一的末端。 sockets描述Sockets可以让您的网络应用程序与其他系统通过网络通信。在网络连接中的每个socket都可以被看作是一个终端点。
47、它有指定地址。socket连接的完整描述,您必须提供socket连接的两端的地址。在开始一个socket连接之前,必须完成所要获得的连接的完整的描述。可以从应用程序运行的系统平台上获取一些信息。例如,您不需要描述客户端socket的本地IP地址,可以从操作系统中得到这个信息。但是你必须提供你所依赖的socket类型的信息。客户端socket必须描述他们想要连接到的服务器。侦听服务器socket必须描述它们提供的服务器端口的响应。一个完整的socket连接的描述由2个部分组成:1. IP地址主机是一个这样的系统,它运行着含有socket的应用程序。你需要向socket来描述主机,这个描述需要给出
48、主机的IP地址。该地址是一个字符串,有四个数字(byte)值,并在标准的internet点付内。例如一个简单的系统可以支持多个IP地址。IP地址往往很难记住,容易打错。另一种方法是使用主机名。主机名就是IP地址的另一个名字,是常见的统一资源定位(URLs)。它是一个字符串,包括域名和服务。例如,大部分内部网中的主机名对应的IP地址是internetIP地址。在windows95和NT机器上,如果你无法使用一个主机名,你可以在HOSTS文件中给你的本地IP地址取一个新的名字。服务器sockets可以不指定主机。可以从系统中获取本地IP地址。如果本地系统可以支持多个IP地址,
49、则服务器sockets也会在所有的IP地址上侦听客户端请求的。当服务器sockets同意一个连接请求时,由客户端提供一个远程的IP地址。客户端sockets必须通过提供主机名或地址来指定远程主机。从主机名和IP地址之间选择一个,很多应用程序使用主机名来指定系统。主机名不容易忘而且便于检查排版是否错误。此外,服务器可以改变系统或与IP地址相关联的特殊的主机名。使用主机名,可以让客户端通过主机名来查找需要的站点,即使主机更换了IP地址。如果不知道主机名,客户socket必须知道服务器系统所使用的IP地址。通过提供IP地址来指定服务器会更快。当您提供主机名时,socket要定位服务器系统,就要先搜索
50、与这个主机名相关联的IP地址。2. 端口号在socket连接中,虽然通过IP地址提供的信息可以方便的找到另一端的系统,但是通常也需要指定那个系统的端口号。没有端口号,一个系统同时只能进行一个单一的连接。端口号标识允许一个独立的系统连接到支持同时多个连接的主机,所以连接必须指定端口号。在网络应用程序中,端口号是服务器工具的一个数字代码。他们的作用是侦听连接到他们自己固定的端口号,这样他们才能找到客户端sockets。服务器sockets要为其服务的相关端口号进行监听。当他们被允许提供一个客户端sockets连接时,就会创建一个单独的sockets连接,使用不同的端口号。以此实现持续监控端口号的相
51、关服务。客户端socket使用专用的本地端口号,而不必使用其他socket来查找它们。通过指定他们想要连接的服务端的端口号,来查找服务器应用程序。通常是通过指定要连接的服务来指定端口号。 使用socket组件有客户端sockets和服务器sockets两个组件。它们允许你连接到其他的机器,并允许你通过这个连接读写信息。与每个sockets控件相关联的是windows socket对象,它们是一个实用的终端socket连接。ssocket控件使用windows socket对象去封装windows socket API 调用,所以不
52、需要你的应用去关心怎么建立连接,也不需要去管理socket信息。1.使用客户端sockets在你自己的页面上添加一个客户端socket组件(TClientSocket),把你的应用变成一个TCP/IP客户。指定你想连接的服务器socket和你希望服务器提供的服务。通过描述你想得到的连接,使客户socket控件去完成连接服务。每个客户socket控件都使用独立的客户windows socket对象(TClientWinSocket)去应答连接中的客户终端。使用客户sockets:A、指定想得到的服务客户socket组件有一个数字properties,通过它可以指定你要连接到的服务器系统
53、和端口。可以用主机名指定所需要的服务器系统。如果您不知道主机名,或者您是关注服务器的查找速度,您可以通过使用IP地址属性来指定服务器系统的地址。您必须指定一个IP地址或者主机名。如果您都指定了,客户socket控件会自动使用主机名。除了服务器系统,您还必须指定客户socket将连接到的服务器系统的端口。您可以使用Port property来指定服务端口号。也可以在Service property中使用服务名。如果您同时指定了端口号和服务的名称,客户socket控件会自动使用服务名。B、建立连接当你在客户socket控件中设置完成了你想要连接的服务器的属性时,你就可以通过Op
54、en的方法来进行连接。如果你希望你的应用程序在启动时能够自动连接,在设计时,通过使用Object Inspector设置Active property为true来实现。当成功连接到服务器socket后,可以使用你的客户端socket控制相关的客户的windows socket object获取有关连接的信息。使用Socket property访问客户端窗口对象。一个properties,让您确定在客户端和服务器的连接中使用的地址和端口号。当使用一个windows socket API调用时,可以通过使用SocketHandl
55、e property去获得socket连接中使用的handle。也可以用Handle property去访问windows,能够获得socket连接的信息。AsyncStyles property可以决定windows handle要接收信息类型。当通讯完成要将socket连接关闭时,可以调用Close方法来关闭连接。如果连接由服务器端进行关闭,你会收到一个ondisconnect的事件通知。2. 使用服务器sockets在你自己的页面添加一个服务端Socket组件使你的应用成为一个TCP / IP的服务器。你可以指定要服务器sockets提供的服务或当
56、探查到客户端请求时使用哪个端口。您可以使用服务器socket控件来监视和允许客户端连接请求。每个socket服务器控件都有一个单独的windows socket Object(TServerWinSocket)来回答侦听到的连接。它使用一个服务器客户winodws socket Object(TServerClientWinSocket)来应答所有连接的的客户socket。A. 指定端口在你的服务器socket还不能监听客户请求时,你需要给你的监听服务指定一个端口。可以通过Port property来指定端口。如果您的服务器应用程序提供了一个标
57、准服务,该服务将使用自定义相关端口。可以通过Service property指定固定的端口号。使用Service property,可以避免端口号的设置错误。如果同时指定了Port property和Service property,服务socket将自动使用服务名。B.监听客户请求当你在server socket控件上设置了端口号,就可以通过调用Open方法来监听连接。可以通过使用Object Inspector设置Active 属性为true来设置应用程序在启动时可以自动监听连接。C.连接到客户端。监听服务socket控
58、件会自动接受监听到的连接请求。如果没有收到通知,OnClientConnetc事件将发生。D.取得关于连接的信息当你的服务器socket启动了监听连接,就可以通过与你服务器socket控件相关联的服务器windows socket object来获取连接的信息。可以用Socket property来访问server windows socket。object windows socket object的属性可以让你发现客户端socket连接的所有活动,通过socket服务器控件允许连接。使用Handle属性来访问通过sock
59、et连接接收到的信息。所有活动的,连接的客户应用都是是通过服务、客户windows socket bject (TServerClientWinSocket)封装的。可以通过server windows socket object的属性来读取这些信息。这些server client windows socket object的属性可以让你决定哪些地址和端口号给连接的客户和服务器socket使用。如果你使用windows socket API调用,那么可以通过SocketHandle属性来获取socket连接时所使用的handle。也可以通过Handle属性去读取windows从socket连接处获得的信息。windows handle将接收的信息类型由AsyncStyles属性来决定。E.关闭连接可以通过调用Close方法来关闭监听连接。这时所有打开着的以及连接到客户应用的连接将会关闭,尚未同意的连接将会取消,然后会关闭监听连接,使你的服务socket控件不在接受任何新的连接请求。如果客户端关闭了他们连接到你的server socket的独立的连接时,服务端会在OnClientDisconnect事件中得到相关讯息。2.4.1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健身房微信公众号推广服务协议范文
- 传统手工艺题材纪录片中地域文化的影像建构-兼论个人作品《晋醋》
- 2025-2030中国房地产投资管理解决方案行业市场现状供需分析及投资评估规划分析研究报告
- 心理学专业实习总结与案例分析范文
- 《首届湖南旅游发展大会开幕式暨文化旅游推介会》模拟交替口译实践报告
- 小学科学课件制作计划
- 《民族乐器独奏欣赏:音乐鉴赏教学教案》
- 未来的发明300字(10篇)
- 2025-2030中国大输液行业经营现状分析与前景竞争格局展望研究报告
- 多媒体教学环境下教师信息技术提升计划
- GB/T 7159-1987电气技术中的文字符号制订通则
- GB/T 3934-2003普通螺纹量规技术条件
- 尿动力学检查操作指南2023版
- 行政事业单位无形资产管理办法模板
- 2023年上海高考语文试卷+答案
- 建筑施工企业安全生产条件检查表
- 煤化工工艺学教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案全书教案课件合集
- 银行全国科技周活动宣传总结
- SCL-90量表详细
- 公路工程项目环境保护措施及其可行性论证
- 普通车床的主轴箱设计机械外文文献翻译、中英文翻译、外文翻译
评论
0/150
提交评论