高校智能排課系統(tǒng)的研究設(shè)計(jì)與實(shí)現(xiàn)資料_第1頁
高校智能排課系統(tǒng)的研究設(shè)計(jì)與實(shí)現(xiàn)資料_第2頁
高校智能排課系統(tǒng)的研究設(shè)計(jì)與實(shí)現(xiàn)資料_第3頁
高校智能排課系統(tǒng)的研究設(shè)計(jì)與實(shí)現(xiàn)資料_第4頁
高校智能排課系統(tǒng)的研究設(shè)計(jì)與實(shí)現(xiàn)資料_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、現(xiàn)如今,隨著我國高校的快速發(fā)展,各個(gè)大學(xué)早已朝著綜合大學(xué)的發(fā)展,所開設(shè)的學(xué)科、專業(yè)以及學(xué)院都如迅猛發(fā)展,尤其是擴(kuò)招以來,各個(gè)大學(xué)的在校學(xué)生數(shù)量猛增,在這種情況,以前學(xué)校的教務(wù)排課系統(tǒng)已遠(yuǎn)遠(yuǎn)不能滿足現(xiàn)在這個(gè)快速發(fā)展的現(xiàn)狀,以前的那種手動(dòng)排課或者簡單的無紙化的系統(tǒng),已經(jīng)不能滿足現(xiàn)在排課的需求,很容易出現(xiàn)紕漏,導(dǎo)致正常的教學(xué)活動(dòng)不能順暢進(jìn)行。本文正是基于目前這種現(xiàn)狀,利用目前比較流行的B/S模式,流行的關(guān)系型數(shù)據(jù)庫MySql以及應(yīng)用非常普遍的PHP技術(shù),對(duì)本次高校智能排課系統(tǒng)進(jìn)行設(shè)計(jì)與實(shí)現(xiàn)。本次主要是利用了比較先進(jìn)的流行的排課算法對(duì)本系統(tǒng)高校智能排課進(jìn)行自動(dòng)排課。本系統(tǒng)大體的思路是,首先對(duì)各種基本資

2、料進(jìn)行管理,并且對(duì)各個(gè)用戶(教師、教務(wù)人員、學(xué)生等)進(jìn)行用戶管理,并且對(duì)其進(jìn)行角色管理;然后設(shè)置了對(duì)所有排課信息進(jìn)行管理的模塊,進(jìn)一步對(duì)所有的排課信息進(jìn)行詳細(xì)管理,在這個(gè)基礎(chǔ)上,利用先進(jìn)的排課算法對(duì)這些信息進(jìn)行排課操作,最后,可通過課程表信息發(fā)布與查詢模塊對(duì)智能排課信息進(jìn)行查詢與下載,并可以以Excel的形式進(jìn)行下載與保存。本次對(duì)以上五個(gè)模塊從需求分析到系統(tǒng)設(shè)計(jì)再到系統(tǒng)實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析與闡述,并且在最后對(duì)各個(gè)模塊進(jìn)行了詳細(xì)的測試。通過試用,本次高校智能排課系統(tǒng)達(dá)到了預(yù)期的目標(biāo)。 關(guān)鍵字:智能;排課系統(tǒng);PHP;數(shù)據(jù)庫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 背景分析 隨著科學(xué)技術(shù)的不斷發(fā)展,各個(gè)行業(yè)信息化、科學(xué)化不斷推進(jìn)。高校該如何才能提高辦學(xué)的效率。這是每個(gè)高校都會(huì)面臨的,也是每個(gè)高校需要迫切解決的問題。而采用信息化手段來代替?zhèn)鹘y(tǒng)的教學(xué)管理模式是一個(gè)重要的途徑。 高校的信息化管理和辦公自動(dòng)化的不斷推進(jìn),教務(wù)工作也逐漸實(shí)現(xiàn)辦公自動(dòng)化,新學(xué)期課程表的安排工作對(duì)指導(dǎo)整個(gè)學(xué)期日常安排是否妥當(dāng)、對(duì)教學(xué)資源的利用是否合理有著至關(guān)重要的作用。如果采取傳統(tǒng)的人工排課方法容易導(dǎo)致課程沖突、課程重復(fù)

10、、課程錯(cuò)漏等各種問題,而且傳統(tǒng)的人工排課方法的任務(wù)非常重和教務(wù)人員的效率非常低下,當(dāng)課程安排上出現(xiàn)錯(cuò)誤要更改的時(shí)候,教務(wù)人員則需要花費(fèi)大量的時(shí)間協(xié)調(diào)老師、班級(jí)、課程、教室等各種因素。隨著高校規(guī)模的不斷擴(kuò)大,學(xué)生人數(shù)不斷增加,人工排課的難度就呈幾何級(jí)數(shù)增大。 而高校通用排課系統(tǒng)正是為了減輕教務(wù)人員負(fù)擔(dān),減少課程安排的出錯(cuò)率,降低修改課程表難度,提高教學(xué)資源的合理利用率,從而真正意義上實(shí)現(xiàn)教務(wù)工作自動(dòng)化,解決排課這個(gè)大難問題的教務(wù)辦公軟件。目前國內(nèi)發(fā)展情況 國內(nèi)多家專業(yè)開發(fā)教學(xué)管理信息系統(tǒng)的企業(yè),如杭州正方公司、湖南強(qiáng)智公司、湖南青果公司等,在其教務(wù)管理產(chǎn)品中均實(shí)現(xiàn)了自動(dòng)排課功能,但由于軟件設(shè)計(jì)局

11、限,對(duì)合班課程、教師兼課、教室交叉重復(fù)使用等復(fù)雜的情況應(yīng)用效果不十分理想。在實(shí)際應(yīng)用中,主要使用其排課沖突檢測功能進(jìn)行計(jì)算機(jī)輔助排課。國內(nèi)軟件市場上也出現(xiàn)了很多通用型的排課軟件,如“51智能排課”,“啟智達(dá)排課”,“終級(jí)排課”等等,這些通用軟件可以解決簡單的通用排課問題,適合學(xué)科門類和課程門數(shù)較單一的學(xué)校,不適合高校教學(xué)管理應(yīng)用,不能滿足高校多學(xué)科、專業(yè)、以及課程教學(xué)的特殊要求,比如完全學(xué)分制下課程教學(xué)班的排課問題等。通過對(duì)國內(nèi)部分高校的調(diào)研和考察,了解到目前高校排課主要是利用人機(jī)交互式的計(jì)算機(jī)軟件輔助排課方式,這種方式能夠隨時(shí)檢測排課沖突,但在排課效率方面沒有什么優(yōu)勢。也有有少數(shù)高校自行研發(fā)

12、了自動(dòng)排課系統(tǒng),但通常這些排課軟件依賴于各院校自身的實(shí)際需求和管理模式,不會(huì)考慮其他高校的需要,因此它們的數(shù)據(jù)共享性和擴(kuò)展性不強(qiáng),因此沒有完全適用于各高校排課的通用系統(tǒng)。1.3 課題研究內(nèi)容本課題在充分了解和熟悉教務(wù)排課環(huán)節(jié)的基礎(chǔ)上,通過對(duì)排課的要素、制約條件的需求分析,建立基于校園網(wǎng)瀏覽器端/服務(wù)器(B/S)結(jié)構(gòu)自動(dòng)排課系統(tǒng)的業(yè)務(wù)模型,對(duì)系統(tǒng)進(jìn)行概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì),結(jié)合已知的排課算法,讓教務(wù)管理系統(tǒng)擴(kuò)展完善自動(dòng)排課功能,使教務(wù)人員擺脫繁瑣、機(jī)械的手工排課工作,達(dá)到提高排課效率的目的。系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)基于微軟Windows server2000操作系統(tǒng)軟件平臺(tái),采用MySql6.0

13、數(shù)據(jù)庫系統(tǒng)作為數(shù)據(jù)庫開發(fā)平臺(tái),前端數(shù)據(jù)庫開發(fā)工具采用ThinkPhp程序設(shè)計(jì)語言。本人的主要工作如下:(1)分析分析了本學(xué)校基于完全學(xué)分制教學(xué)管理模式下排課的要素和制約條件,提出排課問題的難點(diǎn)和目標(biāo),通過對(duì)排課過程的分析,構(gòu)建自動(dòng)排課系統(tǒng)的邏輯模型;(2)以本人所在單位的實(shí)際情況為背景,對(duì)排課問題進(jìn)行需求分析,建立系統(tǒng)業(yè)務(wù)模型,分析排課流程,給出排課系統(tǒng)的功能模塊框圖;(3)使用已知的排課算法,使排課效率和質(zhì)量得到提高;(4)進(jìn)行系統(tǒng)詳細(xì)設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì),編程實(shí)現(xiàn)自動(dòng)排課系統(tǒng)全部功能,完成軟件開發(fā)。對(duì)實(shí)際的排課問題進(jìn)行測試,分析評(píng)估排課結(jié)果的質(zhì)量和性能并論述系統(tǒng)的可行性和實(shí)用性。通過對(duì)以上方面

14、的研究,完成高校自動(dòng)排課系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。1.4 本論文的章節(jié)結(jié)構(gòu)本論文立足北京聯(lián)合大學(xué)生物化學(xué)工程學(xué)院完全學(xué)分制教務(wù)管理需求特點(diǎn),通過充分的分析和研究,設(shè)計(jì)并實(shí)現(xiàn)了適合學(xué)院需求的自動(dòng)排課系統(tǒng)。論文章節(jié)結(jié)構(gòu)如下:第一章緒論,主要介紹了項(xiàng)目的研究背景、意義和國內(nèi)外發(fā)展、研究和應(yīng)用現(xiàn)狀,同時(shí)也對(duì)本人的主要工作做了簡要介紹。第二章自動(dòng)排課系統(tǒng)需求分析,討論了在完全學(xué)分制下,學(xué)院對(duì)排課的業(yè)務(wù)特點(diǎn)及功能的需求,構(gòu)建自動(dòng)排課系統(tǒng)的邏輯模型。第三章自動(dòng)排課算法的設(shè)計(jì),對(duì)多種排課算法進(jìn)行分析比較,結(jié)合實(shí)際提出改進(jìn)并優(yōu)化的自動(dòng)排課算法。第四章自動(dòng)排課系統(tǒng)的設(shè)計(jì),對(duì)自動(dòng)排課系統(tǒng)進(jìn)行總體方案設(shè)計(jì)、系統(tǒng)詳細(xì)設(shè)計(jì),重點(diǎn)

15、介紹了系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)。第五章自動(dòng)排課系統(tǒng)的實(shí)現(xiàn),對(duì)排課系統(tǒng)各功能模塊的具體實(shí)現(xiàn)過程進(jìn)行了闡述。對(duì)排課系統(tǒng)的實(shí)踐應(yīng)用進(jìn)行測試,驗(yàn)證自動(dòng)排課系統(tǒng)的應(yīng)用效果,并對(duì)系統(tǒng)滿足需求的程度進(jìn)行分析。結(jié)論部分,提出對(duì)本系統(tǒng)的評(píng)價(jià)與展望。第二章 高校智能排課系統(tǒng)的關(guān)鍵技術(shù)2.1 數(shù)據(jù)庫技術(shù)1、數(shù)據(jù)庫的幾個(gè)原則數(shù)據(jù)庫設(shè)計(jì)需要遵循以下幾個(gè)原則:一是,數(shù)據(jù)不僅要標(biāo)準(zhǔn),同時(shí)還要一致。為了給數(shù)據(jù)交流及功能的實(shí)現(xiàn)提供方便,一方面,數(shù)據(jù)庫的設(shè)計(jì)不僅要符合國家行業(yè)和江蘇省地方標(biāo)準(zhǔn)及ITS行業(yè)的習(xí)慣性事實(shí)標(biāo)準(zhǔn),另一方面,還必須要與數(shù)據(jù)庫設(shè)計(jì)的軟件行業(yè)標(biāo)準(zhǔn)相一致。在數(shù)據(jù)庫的設(shè)計(jì)應(yīng)考慮以前己建立系統(tǒng)的數(shù)據(jù),這主要是由于之前的數(shù)據(jù)庫

16、在與其他系統(tǒng)之間進(jìn)行數(shù)據(jù)交換的時(shí)候具有一定的優(yōu)勢。二是,數(shù)據(jù)不僅完整,同時(shí)還要實(shí)用。在數(shù)據(jù)庫設(shè)計(jì)中,我們不僅要考慮系統(tǒng)規(guī)模和實(shí)際需求,同時(shí)還要對(duì)工作的實(shí)際情況和實(shí)際應(yīng)用特點(diǎn)進(jìn)行全面的考慮和分析,在設(shè)計(jì)的過程中,為了保證數(shù)據(jù)的實(shí)用性,必須要遵循“先進(jìn)性與實(shí)用性并重”的原則。數(shù)據(jù)庫中的數(shù)據(jù)只有具備了完整性,才會(huì)具有準(zhǔn)確性,其中通常情況下完整性是通過約束條件來控制的15。另外,在數(shù)據(jù)的選擇中還具有一定的約束條件,約束條件可以檢驗(yàn)進(jìn)入數(shù)據(jù)庫中的數(shù)據(jù)值,其目的主要是為了避免那些重復(fù)或冗余的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫。在系統(tǒng)的設(shè)計(jì)中為了有效保證新建或修改后的數(shù)據(jù)能夠遵循所定義的業(yè)務(wù)知識(shí),可以對(duì)約束條件進(jìn)行科學(xué)、合理的

17、利用。三是,數(shù)據(jù)必須要具有安全性的特點(diǎn)。對(duì)于整個(gè)信息系統(tǒng)來說,數(shù)據(jù)庫不僅僅是其基礎(chǔ),同時(shí)也是其核心,因此必須要保證設(shè)計(jì)的安全性才能夠?yàn)檎麄€(gè)信息系統(tǒng)的運(yùn)轉(zhuǎn)提供條件。在設(shè)計(jì)的過程中,可以構(gòu)建一個(gè)合理和有效的備份和恢復(fù)策略,這樣,當(dāng)數(shù)據(jù)庫由于意外事故,例如人為因素或者天災(zāi)等因素而損壞數(shù)據(jù)庫系統(tǒng)時(shí),就可以利用這一恢復(fù)策略來在最短的時(shí)間內(nèi)使數(shù)據(jù)庫恢復(fù)。除此之外,如果能夠很好的完善數(shù)據(jù)庫訪問的授權(quán)設(shè)計(jì),那么我們就還能夠有效的保證數(shù)據(jù)不被非法訪問。四是,在數(shù)據(jù)庫的設(shè)計(jì)中必須要全面考慮空間、屬性、設(shè)施、模型數(shù)據(jù)的兼容性。鑒于此,交通事件管理數(shù)據(jù)庫設(shè)計(jì)分為綜合數(shù)據(jù)庫設(shè)計(jì)、元數(shù)據(jù)設(shè)計(jì)和關(guān)聯(lián)數(shù)據(jù)設(shè)計(jì)這三種類型。五是

18、,數(shù)據(jù)庫必須要建立和完善分級(jí)管理機(jī)制16。用戶根據(jù)訪問系統(tǒng)的角色的不同可以分為系統(tǒng)管理用戶、運(yùn)行調(diào)度用戶、運(yùn)行瀏覽用戶以及領(lǐng)導(dǎo)決策分析用戶這幾個(gè)類型,不同的角色訪問數(shù)據(jù)的權(quán)限要具有差異,并且使用系統(tǒng)的功能也要具有一定的不同,從而實(shí)現(xiàn)對(duì)角色登陸的嚴(yán)格控制,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)的分級(jí)管理。六是,數(shù)據(jù)不僅獨(dú)立,同時(shí)還要可擴(kuò)展。獨(dú)立性是數(shù)據(jù)庫最基本的特點(diǎn),只有具有獨(dú)立性的數(shù)據(jù)庫才能夠獨(dú)立的應(yīng)用于程序中,并且還能使其自身的數(shù)據(jù)庫的設(shè)計(jì)及其結(jié)構(gòu)的變化不會(huì)對(duì)程序的運(yùn)行造成影響17。另外,結(jié)合之前的成功經(jīng)驗(yàn),詳細(xì)分析系統(tǒng)的需求,并根據(jù)業(yè)務(wù)的變化,要求在數(shù)據(jù)庫的設(shè)計(jì)中要具有較強(qiáng)的擴(kuò)展性,這樣就能夠使數(shù)據(jù)庫系統(tǒng)在增加或者

19、減少其他需求或者應(yīng)用時(shí)能夠保持一定的穩(wěn)定性,不至于發(fā)生太大的變動(dòng)。2、MySQL數(shù)據(jù)庫MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下公司。MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在WEB應(yīng)用方面MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。它主要通過關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉庫內(nèi),這樣就增加了速度并提高了靈活性。MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL軟件采用了雙授權(quán)

20、政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境。 2.2 apache(Web服務(wù)器)1、發(fā)展歷程Apache 起初由伊利諾伊大學(xué)香檳分校的國家超級(jí)電腦應(yīng)用中心(NCSA)開發(fā)。此后,Apache 被開放源代碼團(tuán)體的成員不斷的發(fā)展和加強(qiáng)。Apache 服務(wù)器擁有牢靠可信的美譽(yù),已用在超過半數(shù)的因特網(wǎng)站中特別是幾乎所有最熱門和訪問量最大的網(wǎng)站。Apache最開始是Netscape網(wǎng)頁服務(wù)器之外的開放源代碼選擇。后來它開始在

21、功能和速度超越其他的基于Unix的HTTP服務(wù)器。1996年4月以來,Apache一直是Internet上最流行的HTTP服務(wù)器: 1999年5月它在 57% 的網(wǎng)頁服務(wù)器上運(yùn)行;到了2005年7月這個(gè)比例上升到了69%。在2005年11月的時(shí)候達(dá)到接近70%的市占率,不過隨著擁有大量域名數(shù)量的主機(jī)域名商轉(zhuǎn)換為微軟IIS平臺(tái),Apache市占率近年來呈現(xiàn)些微下滑。而Google自己的網(wǎng)頁服務(wù)器平臺(tái)GWS推出后,加上Lighttpd這 個(gè)輕量化網(wǎng)頁服務(wù)器軟件使用的網(wǎng)站慢慢增加,反應(yīng)在整體網(wǎng)頁服務(wù)器市占率上,根據(jù)netcraft在2007年7月的最新統(tǒng)計(jì)數(shù)據(jù),Apache的市占率已經(jīng)降為52.65

22、%,8月時(shí)又滑落到50.92%。盡管如此,它仍舊是現(xiàn)階段因特網(wǎng)市場上,市占率最高的網(wǎng)頁服務(wù)器軟件。廣泛的解釋是(也是最顯而易見的):這個(gè)名字來自這么一個(gè)事實(shí):當(dāng)Apache在1995年初開發(fā)的時(shí)候,它是由當(dāng)時(shí)最流行的HTTP服務(wù)器NCSA HTTPd 1.3 的代碼修改而成的,因此是“一個(gè)修補(bǔ)的(a patchy)”服務(wù)器。然而在服務(wù)器官方網(wǎng)站的FAQ中是這么解釋的:“Apache這個(gè)名字是為了紀(jì)念名為Apache(印地語)的美洲印第安人土著的一支,眾所周知他們擁有高超的作戰(zhàn)策略和無窮的耐性”。無論如何,Apache 2.x 分支不包含任何 NCSA 的代碼。2、詳細(xì)介紹Apache HTTP

23、 Server(簡稱Apache)是Apache軟件基金會(huì)的一個(gè)開放源碼的網(wǎng)頁服務(wù)器,可以在大多數(shù)計(jì)算機(jī)操作系統(tǒng)中運(yùn)行,由于其多平臺(tái)和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一。它快速、可靠并且可通過簡單的API擴(kuò)展,將Perl/Python等解釋器編譯到服務(wù)器中。Apache HTTP服務(wù)器是一個(gè)模塊化的服務(wù)器,源于NCSAhttpd服務(wù)器,經(jīng)過多次修改,成為世界使用排名第一的Web服務(wù)器軟件。它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上。Apache源于NCSAhttpd服務(wù)器,經(jīng)過多次修改,成為世界上最流行的Web服務(wù)器軟件之一。Apache取自“a patchy server”的

24、讀音,意思是充滿補(bǔ)丁的服務(wù)器,因?yàn)樗亲杂绍浖?,所以不斷有人來為它開發(fā)新的功能、新的特性、修改原來的缺陷。Apache的特點(diǎn)是簡單、速度快、性能穩(wěn)定,并可做代理服務(wù)器來使用。本來它只用于小型或試驗(yàn)Internet網(wǎng)絡(luò),后來逐步擴(kuò)充到各種Unix系統(tǒng)中,尤其對(duì)Linux的支持相當(dāng)完美。Apache有多種產(chǎn)品,可以支持SSL技術(shù),支持多個(gè)虛擬主機(jī)。Apache是以進(jìn)程為基礎(chǔ)的結(jié)構(gòu),進(jìn)程要比線程消耗更多的系統(tǒng)開支,不太適合于多處理器環(huán)境,因此,在一個(gè)Apache Web站點(diǎn)擴(kuò)容時(shí),通常是增加服務(wù)器或擴(kuò)充群集節(jié)點(diǎn)而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web服務(wù)器,市場占有率達(dá)6

25、0%左右。世界上很多著名的網(wǎng)站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的產(chǎn)物,它的成功之處主要在于它的源代碼開放、有一支開放的開發(fā)隊(duì)伍、支持跨平臺(tái)的應(yīng)用(可以運(yùn)行在幾乎所有的Unix、Windows、Linux系統(tǒng)平臺(tái)上)以及它的可移植性等方面。Apache的誕生極富有戲劇性。當(dāng)NCSAWWW服務(wù)器項(xiàng)目停頓后,那些使用NCSAWWW服務(wù)器的人們開始交換他們用于該服務(wù)器的補(bǔ)丁程序,他們也很快認(rèn)識(shí)到成立管理這些補(bǔ)丁程序的論壇是必要的。就這樣,誕生了Apache Group,后來這個(gè)團(tuán)體在NCSA的基礎(chǔ)上創(chuàng)建了Apache。3、特性A

26、pacheweb服務(wù)器軟件擁有以下特性:HTTPHTTP認(rèn)證Perl處理模塊代理服務(wù)器模塊9.支持服務(wù)器端包含指令(SSI)Socket層(SSL)第三方模塊可以支持JavaServlets2.2 PHP技術(shù)1、簡介PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預(yù)處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開發(fā)領(lǐng)域。PHP 獨(dú)特的語法混合了C、Java、Perl以及PHP自創(chuàng)的語法。它可以比CGI或者Perl更快速地執(zhí)行動(dòng)態(tài)網(wǎng)頁。用PHP做出的動(dòng)態(tài)頁面與其他的編程語言相比,PHP是將

27、程序嵌入到HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行,使代碼運(yùn)行更快。2、發(fā)展歷程PHP原始為Personal Home Page的縮寫,已經(jīng)正式更名為 "PHP: Hypertext Preprocessor"。注意不是“Hypertext Preprocessor”的縮寫,這種將名稱放到定義中的寫法被稱作遞歸縮寫。PHP于1994年由Rasmus Lerdorf創(chuàng)建,剛剛開始是Rasmus Lerdorf為了要維護(hù)個(gè)人網(wǎng)頁而制作的一個(gè)簡單的用Perl語言

28、編寫的程序。這些工具程序用來顯示 Rasmus Lerdorf 的個(gè)人履歷,以及統(tǒng)計(jì)網(wǎng)頁流量。后來又用C語言重新編寫,包括可以訪問數(shù)據(jù)庫。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和數(shù)據(jù)庫連接,產(chǎn)生簡單的動(dòng)態(tài)網(wǎng)頁程序。在1995年以Personal Home Page Tools (PHP Tools) 開始對(duì)外發(fā)表第一個(gè)版本,Lerdorf寫了一些介紹此程序的文檔。并且發(fā)布了PHP1.0!在這的版本中,提供了訪客留言本、訪客計(jì)數(shù)器等簡單的功能。以后越來越多的網(wǎng)站使用了PHP,并且強(qiáng)烈要求增加一些特性。比如循環(huán)語句和數(shù)組變量等等;在新的成員加入開發(fā)行列之后,R

29、asmus Lerdorf 在1995年6月8日將 PHP/FI 公開發(fā)布,希望可以透過社群來加速程序開發(fā)與尋找錯(cuò)誤。這個(gè)發(fā)布的版本命名為 PHP 2,已經(jīng)有 PHP 的一些雛型,像是類似 Perl的變量命名方式、表單處理功能、以及嵌入到 HTML 中執(zhí)行的能力。程序語法上也類似 Perl,有較多的限制,不過更簡單、更有彈性。PHP/FI加入了對(duì)MySQL的支持,從此建立了PHP在動(dòng)態(tài)網(wǎng)頁開發(fā)上的地位。到了1996年底,有15000個(gè)網(wǎng)站使用 PHP/FI。在1997年,任職于 Technion IIT公司的兩個(gè)以色列程序設(shè)計(jì)師:Zeev Suraski 和 Andi Gutmans,重寫了

30、PHP 的剖析器,成為 PHP 3 的基礎(chǔ)。而 PHP 也在這個(gè)時(shí)候改稱為PHP:Hypertext Preprocessor。經(jīng)過幾個(gè)月測試,開發(fā)團(tuán)隊(duì)在1997年11月發(fā)布了 PHP/FI 2。隨后就開始 PHP 3 的開放測試,最后在1998年6月正式發(fā)布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 發(fā)布后開始改寫PHP 的核心,這個(gè)在1999年發(fā)布的剖析器稱為 Zend Engine,他們也在以色列的 Ramat Gan 成立了 Zend Technologies 來管理 PHP 的開發(fā)。在2000年5月22日,以Zend Engine 1.0為基

31、礎(chǔ)的PHP 4正式發(fā)布,2004年7月13日則發(fā)布了PHP 5,PHP 5則使用了第二代的Zend Engine。PHP包含了許多新特色,像是強(qiáng)化的面向?qū)ο蠊δ?、引入PDO(PHP Data Objects,一個(gè)存取數(shù)據(jù)庫的延伸函數(shù)庫)、以及許多效能上的增強(qiáng)。PHP 4已經(jīng)不會(huì)繼續(xù)更新,以鼓勵(lì)用戶轉(zhuǎn)移到PHP 5。2008年P(guān)HP 5成為了PHP唯一的有在開發(fā)的PHP版本。將來的PHP 5.3將會(huì)加入Late static binding和一些其他的功能強(qiáng)化。PHP 6 的開發(fā)也正在進(jìn)行中,主要的改進(jìn)有移除register_globals、magic quotes 和 Safe mode的功能

32、。PHP最新穩(wěn)定版本:5.4.30(2013.6.26)PHP最新發(fā)布的正式版本:5.5.14(2014.6.24)PHP最新測試版本:5.6.0 RC2(2014.6.03)2013年6月20日,PHP開發(fā)團(tuán)隊(duì)自豪地宣布推出PHP 5.5.0。此版本包含了大量的新功能和bug修復(fù)。需要開發(fā)者特別注意的一點(diǎn)是不再支持 Windows XP 和 2003 系統(tǒng)。2014年10月16日,PHP開發(fā)團(tuán)隊(duì)宣布PHP 5.6.2可用。四安全相關(guān)的錯(cuò)誤是固定在這個(gè)版本,包括修復(fù)cve-2014-3668,cve-2014-3669和cve-2014-3670。所有的PHP 5.6鼓勵(lì)用戶升級(jí)到這個(gè)版本。3

33、、其它特點(diǎn)數(shù)據(jù)連接:PHP可以編譯成具有與許多數(shù)據(jù)庫相連接的函數(shù)。PHP與MySQL是絕佳的組合。自己編寫外圍的函數(shù)取間接存取數(shù)據(jù)庫。通過這樣的途徑當(dāng)你更換使用的數(shù)據(jù)庫時(shí),可以輕松的更改編碼以適應(yīng)這樣的變化。PHPLIB就是最常用的可以提供一般事務(wù)需要的一系列基庫。php編程技術(shù)可擴(kuò)展性:就像前面說的那樣,PHP已經(jīng)進(jìn)入了一個(gè)高速發(fā)展的時(shí)期。對(duì)于一個(gè)非程序員來說為PHP擴(kuò)展附加功能可能會(huì)比較難,但是對(duì)于一個(gè)PHP程序員來說并不困難。php編程技術(shù)面向?qū)ο螅篜HP提供了類和對(duì)象?;趙eb的編程工作非常需要面向?qū)ο缶幊棠芰ΑHP支持構(gòu)造器、提取類等。php編程技術(shù)可伸縮性:傳統(tǒng)上網(wǎng)頁的交互作用

34、是通過CGI來實(shí)現(xiàn)的。CGI程序的伸縮性不很理想,因?yàn)樗鼮槊恳粋€(gè)正在運(yùn)行的CGI程序開一個(gè)獨(dú)立進(jìn)程。解決方法就是將經(jīng)常用來編寫CGI程序的語言的解釋器編譯進(jìn)你的web服務(wù)器(比如mod_perl,JSP)。PHP就可以以這種方式安裝,雖然很少有人愿意這樣以CGI方式安裝它。內(nèi)嵌的PHP可以具有更高的可伸縮性。php編程技術(shù)更多特點(diǎn):PHP的開發(fā)者們?yōu)榱烁m合web編程,開發(fā)了許多外圍的流行基庫,這些庫包含了更易用的層。利用PHP連接包括Oracle,MS- Access,Mysql在內(nèi)的大部分?jǐn)?shù)據(jù)庫??梢栽谏n蠅上畫圖,編寫程序下載或者顯示e-mail。甚至可以完成網(wǎng)絡(luò)相關(guān)的功能。最好的是,可以

35、選擇你的PHP安裝版本需要哪些功能。引用Nissan的Xterra的話來說就是PHP可以做到你想讓它做到的一切而且無所不能!2.3 B/S架構(gòu)介紹B/S(Browser/Server)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。B/S網(wǎng)絡(luò)結(jié)構(gòu)模式是基于Intranet的需求而出現(xiàn)并發(fā)展的。Intranet是應(yīng)用TCP/1P協(xié)議建立的企事業(yè)單位內(nèi)部專用網(wǎng)絡(luò),它采用諸如TCP/IP、HTTP、SMTP和HTML等Internet技術(shù)和標(biāo)準(zhǔn),能為企事業(yè)單位內(nèi)部交換信息提供服務(wù)。同時(shí),它具有連接Internet的功能和防止外界入侵的安全措施。另一方而,由于數(shù)據(jù)庫具有強(qiáng)大的數(shù)據(jù)存儲(chǔ)和管理能力,并且能夠動(dòng)態(tài)地進(jìn)行數(shù)據(jù)輸入和

36、輸出,如果把數(shù)據(jù)庫應(yīng)用于Internet上,不僅可以實(shí)現(xiàn)大量信息的網(wǎng)上發(fā)布,而且能夠?yàn)閺V大用戶提供動(dòng)態(tài)的信息查詢和數(shù)據(jù)處理服務(wù),進(jìn)而加強(qiáng)企事業(yè)單位內(nèi)部部門之間、上級(jí)部門與下級(jí)部門之間、企事業(yè)單位員工之間、企事業(yè)單位與客戶之間以及企事業(yè)單位與企事業(yè)單位之間的信息交流,降低企事業(yè)單位的日常工作成本,提高企事業(yè)單位的經(jīng)濟(jì)效益。B/S模式,是一種從傳統(tǒng)的二層C/S模式發(fā)展起來的新的網(wǎng)絡(luò)結(jié)構(gòu)模式,其本質(zhì)是三層及三層以上結(jié)構(gòu)的C/S模式。在B/S模式中,客戶端運(yùn)行瀏覽器軟件。瀏覽器以超文本形式向Web服務(wù)器提出訪問數(shù)據(jù)庫的要求,Web服務(wù)器接受客戶端請(qǐng)求后,將這個(gè)請(qǐng)求轉(zhuǎn)化為SQL語法,并交給數(shù)據(jù)庫服務(wù)器,

37、數(shù)據(jù)庫服務(wù)器得到請(qǐng)求后,驗(yàn)證其合法性,并進(jìn)行數(shù)據(jù)處理,然后將處理后的結(jié)果返回Web服務(wù)器,Web服務(wù)器再一次將得到的所有結(jié)果進(jìn)行轉(zhuǎn)化,變成HTML文檔形式,轉(zhuǎn)發(fā)給客戶端瀏覽器以友好的Web頁面形式顯示出來。B/S模式最大的優(yōu)勢是靈活性,任何時(shí)間、任何地點(diǎn)、任何系統(tǒng),只要可以使用瀏覽器上網(wǎng),就可以使用B/S系統(tǒng)的終端。其主要特點(diǎn)如下:1、系統(tǒng)開發(fā)、維護(hù)和升級(jí)的經(jīng)濟(jì)性對(duì)于大型的管理信息系統(tǒng),軟件開發(fā)、維護(hù)與升級(jí)的費(fèi)用是非常高的,B/S模式所具有的框架結(jié)構(gòu)可以大大節(jié)省這些費(fèi)用,同時(shí),B/S模式對(duì)前臺(tái)客戶機(jī)的要求并不高,可以避免盲目進(jìn)行硬件升級(jí)造成的巨大浪費(fèi)。2、B/S模式提供了一致的用戶界面B/S模

38、式的應(yīng)用軟件都是基于Web瀏覽器的,這些瀏覽器的界面都很相似。對(duì)于無用戶交互功能的頁面,用戶接觸的界面都是一致的,從而可以降低軟件的培訓(xùn)費(fèi)用。3、B/S模式具有很強(qiáng)的開放性在B/S模式下,外部的用戶亦可通過通用的瀏覽器進(jìn)行訪問。4、B/S模式的結(jié)構(gòu)易于擴(kuò)展由于Web的平臺(tái)無關(guān)性,B/S模式結(jié)構(gòu)可以任意擴(kuò)展,可以從一臺(tái)服務(wù)器、幾個(gè)用戶的工作組級(jí)擴(kuò)展成為擁有成千上萬用戶的大型系統(tǒng)。5、B/S模式具有更強(qiáng)的信息系統(tǒng)集成性在B/S模式下,集成了解決企事業(yè)單位各種問題的服務(wù),而非零散的單一功能的多系統(tǒng)模式,因而它能提供更高的工作效率。6、B/S模式提供靈活的信息交流和信息發(fā)布服務(wù)B/S模式借助Inter

39、net強(qiáng)大的信息發(fā)布與信息傳送能力可以有效地解決企業(yè)、高等學(xué)校內(nèi)部的大量不規(guī)則的信息交流。2.4 Socket技術(shù)2.4.1 Sockets介紹 Sockets具體說明使用Sockets Socket控件讓你建立一個(gè)利用TCP/IP和有關(guān)的協(xié)議與其他系統(tǒng)進(jìn)行通信的應(yīng)用。還能夠讀和寫通過它連接的其他機(jī)器,而不用擔(dān)心實(shí)際的網(wǎng)絡(luò)軟件的相關(guān)細(xì)節(jié)。Sockets提供基于TCP/IP協(xié)議的連接。除此以外還能很好的工作,在其他相關(guān)的協(xié)議:例如Xerox Network System (XNS), Digital's DEC&#

40、160;net, or Novell's IPX/SPX 家族。C+ Builder提供你寫網(wǎng)絡(luò)服務(wù)器或客戶應(yīng)用程序去讀和寫其他的系統(tǒng)。一個(gè)服務(wù)或客戶程序通常專注于一個(gè)單一的服務(wù)如超文本傳送協(xié)議(HTTP)或文件傳輸協(xié)議(FTP)。使用Server sockets,一個(gè)應(yīng)用程序可以提供這些服務(wù)中的一個(gè)去連接一個(gè)希望使用服務(wù)的客戶程序。Client sockets允許一個(gè)應(yīng)用使用這些服務(wù)中的一個(gè)去連接提供這個(gè)服務(wù)的服務(wù)應(yīng)用。使用sockets去寫應(yīng)用程序,你必須理解下面這些知識(shí): 服務(wù)工具當(dāng)你需要寫網(wǎng)絡(luò)服

41、務(wù)或客戶應(yīng)用時(shí),Sockets提供一種接合。對(duì)于許多服務(wù),象HTTP 或 FTP,第三方服務(wù)商提供這些服務(wù)已經(jīng)相當(dāng)有效。有些甚至隨著操作系統(tǒng)捆綁而來,以便不用你自己寫。然而,當(dāng)你想更多的控制服務(wù)的實(shí)現(xiàn),如想讓你的應(yīng)用程序與網(wǎng)絡(luò)通信更加緊密,或當(dāng)沒有一個(gè)服務(wù)能提供你特殊需要的服務(wù)時(shí),你可能想建立你自己的服務(wù)或客戶應(yīng)用。例如,工作在分布式data sets時(shí),你可能想為數(shù)據(jù)庫寫一層與其他系統(tǒng)通信的應(yīng)用。想使用Sockets實(shí)現(xiàn)一個(gè)服務(wù),你必須理解:1、服務(wù)協(xié)議在你寫一個(gè)網(wǎng)絡(luò)服務(wù)或客戶程序前,你必須明白你的應(yīng)用將提供或使用什么服務(wù)。你的網(wǎng)絡(luò)應(yīng)用必須支持許多服務(wù)的標(biāo)準(zhǔn)協(xié)議

42、。如果你為標(biāo)準(zhǔn)的服務(wù)例如HTTP,FTP寫網(wǎng)絡(luò)應(yīng)用,或even finger or time,你必須先理解與其他系統(tǒng)通信所使用的協(xié)議。特殊服務(wù)細(xì)節(jié)你必須看提供的或使用的文檔。如果你的應(yīng)用程序提供一個(gè)新的服務(wù)與其他系統(tǒng)通信,第一步是為這個(gè)服務(wù)的服務(wù)端和客戶端設(shè)計(jì)通信協(xié)議。什么信息將發(fā)送?如何整理這些信息?如何對(duì)這些信息進(jìn)行編碼?經(jīng)常的,你的網(wǎng)絡(luò)服務(wù)端或客戶端應(yīng)用程序要提供一層在網(wǎng)絡(luò)軟件和一個(gè)應(yīng)用之間使用的服務(wù)。例如,一個(gè)HTTP服務(wù)站點(diǎn)在INternet與一個(gè)Web 服務(wù)應(yīng)用之間為HTTP請(qǐng)求信息提供內(nèi)容和應(yīng)答。在你的網(wǎng)絡(luò)應(yīng)用(或客戶應(yīng)用)和網(wǎng)絡(luò)軟件之間S

43、ockets 提供一個(gè)接口。該接口在你的應(yīng)用程序與應(yīng)用間使用。你可以拷貝第三方服務(wù)商提供的標(biāo)準(zhǔn)API(例如ISAPI),或你可以設(shè)計(jì)和發(fā)布你自己的API。2、理解服務(wù)和端口許多標(biāo)準(zhǔn)服務(wù)都有關(guān)聯(lián)的、指定的端口號(hào)。當(dāng) 執(zhí)行服務(wù)時(shí),你可以為服務(wù)考慮一個(gè)端口號(hào)。如果你實(shí)現(xiàn)一個(gè)標(biāo)準(zhǔn)服務(wù), Windows socket objects 提供一些方法讓你為服務(wù)尋找端口號(hào)。如果提供一個(gè)新的服務(wù),在基于Windows 95 或 NT機(jī)器上,你能夠在文件Services中為你的服務(wù)指定一個(gè)相關(guān)聯(lián)的端口號(hào)。設(shè)置Services

44、文件的更多信息請(qǐng)看微軟 的Windows Sockets文檔。 Socket連接的類型Socket連接基本可以分成三個(gè)不同的類型,他們可以反映出如何開始連接和什么是本地Socket 連接。這三個(gè)不同的類型分別是:1、客戶端連接客戶端連接是由本地系統(tǒng)的客戶端socket和一個(gè)遠(yuǎn)程系統(tǒng)上的服務(wù)端Socket進(jìn)行連接。客戶端連接是由本地系統(tǒng)的客戶端Socket開始。首先,由客戶端Socket來描述它想連接到的服務(wù)端Socket. 然后由客戶端socket查找服務(wù)端socket,如果查找到了服務(wù)器,就發(fā)出連接要求。服務(wù)端socket有可能無法正確的連接到客戶端S

45、ocket。服務(wù)器sockets會(huì)形成一個(gè)客戶端申請(qǐng)連接的隊(duì)列,在他們能滿足條件是自動(dòng)進(jìn)行連接。當(dāng)服務(wù)端socket同意客戶端的連接要求時(shí),服務(wù)端socket就會(huì)向它準(zhǔn)備連接的客戶socket發(fā)送一個(gè)完整的描述,客戶端就可以完成連接。2、傾聽連接服務(wù)器socket不主動(dòng)連接客戶端,相反,他們形成了一個(gè)被動(dòng)的“半連接“狀態(tài),聽客戶的請(qǐng)求。服務(wù)器 sockets形成一個(gè)連接請(qǐng)求隊(duì)列,來儲(chǔ)存它所接收到的連接請(qǐng)求。此隊(duì)列記錄客戶連接請(qǐng)求,就像它們已經(jīng)連接了似的。當(dāng)服務(wù)器 sockets與客戶連接請(qǐng)求相一致時(shí),它就形成了一個(gè)新的sockets連接到客戶端,所以這個(gè)監(jiān)聽連接可以保持打開

46、以便允許其他客戶端請(qǐng)求。3. 服務(wù)端連接當(dāng)傾聽socket同意客戶端發(fā)出的連接請(qǐng)求時(shí),服務(wù)器端socket形成了服務(wù)器連接。當(dāng)服務(wù)器同意連接時(shí),要將一個(gè)完整的服務(wù)端socket描述發(fā)送給準(zhǔn)備連接的客戶端,以完成連接,當(dāng)客戶端接收到這個(gè)描述時(shí),連接已被確認(rèn),連接完成。一旦連接到客戶端的Socket完成,服務(wù)器連接就無法識(shí)別從客戶端發(fā)來的連接。兩端具有相同的接收相同事件類型的能力。只有傾聽(listening)連接是根本不同的,它只有一個(gè)單一的末端。 sockets描述Sockets可以讓您的網(wǎng)絡(luò)應(yīng)用程序與其他系統(tǒng)通過網(wǎng)絡(luò)通信。在網(wǎng)絡(luò)連接中的每個(gè)socket都可以被看作是一個(gè)終端點(diǎn)。

47、它有指定地址。socket連接的完整描述,您必須提供socket連接的兩端的地址。在開始一個(gè)socket連接之前,必須完成所要獲得的連接的完整的描述??梢詮膽?yīng)用程序運(yùn)行的系統(tǒng)平臺(tái)上獲取一些信息。例如,您不需要描述客戶端socket的本地IP地址,可以從操作系統(tǒng)中得到這個(gè)信息。但是你必須提供你所依賴的socket類型的信息??蛻舳藄ocket必須描述他們想要連接到的服務(wù)器。偵聽服務(wù)器socket必須描述它們提供的服務(wù)器端口的響應(yīng)。一個(gè)完整的socket連接的描述由2個(gè)部分組成:1. IP地址主機(jī)是一個(gè)這樣的系統(tǒng),它運(yùn)行著含有socket的應(yīng)用程序。你需要向socket來描述主機(jī),這個(gè)描述需要給出

48、主機(jī)的IP地址。該地址是一個(gè)字符串,有四個(gè)數(shù)字(byte)值,并在標(biāo)準(zhǔn)的internet點(diǎn)付內(nèi)。例如一個(gè)簡單的系統(tǒng)可以支持多個(gè)IP地址。IP地址往往很難記住,容易打錯(cuò)。另一種方法是使用主機(jī)名。主機(jī)名就是IP地址的另一個(gè)名字,是常見的統(tǒng)一資源定位(URLs)。它是一個(gè)字符串,包括域名和服務(wù)。例如,大部分內(nèi)部網(wǎng)中的主機(jī)名對(duì)應(yīng)的IP地址是internetIP地址。在windows95和NT機(jī)器上,如果你無法使用一個(gè)主機(jī)名,你可以在HOSTS文件中給你的本地IP地址取一個(gè)新的名字。服務(wù)器sockets可以不指定主機(jī)??梢詮南到y(tǒng)中獲取本地IP地址。如果本地系統(tǒng)可以支持多個(gè)IP地址,

49、則服務(wù)器sockets也會(huì)在所有的IP地址上偵聽客戶端請(qǐng)求的。當(dāng)服務(wù)器sockets同意一個(gè)連接請(qǐng)求時(shí),由客戶端提供一個(gè)遠(yuǎn)程的IP地址??蛻舳藄ockets必須通過提供主機(jī)名或地址來指定遠(yuǎn)程主機(jī)。從主機(jī)名和IP地址之間選擇一個(gè),很多應(yīng)用程序使用主機(jī)名來指定系統(tǒng)。主機(jī)名不容易忘而且便于檢查排版是否錯(cuò)誤。此外,服務(wù)器可以改變系統(tǒng)或與IP地址相關(guān)聯(lián)的特殊的主機(jī)名。使用主機(jī)名,可以讓客戶端通過主機(jī)名來查找需要的站點(diǎn),即使主機(jī)更換了IP地址。如果不知道主機(jī)名,客戶socket必須知道服務(wù)器系統(tǒng)所使用的IP地址。通過提供IP地址來指定服務(wù)器會(huì)更快。當(dāng)您提供主機(jī)名時(shí),socket要定位服務(wù)器系統(tǒng),就要先搜索

50、與這個(gè)主機(jī)名相關(guān)聯(lián)的IP地址。2. 端口號(hào)在socket連接中,雖然通過IP地址提供的信息可以方便的找到另一端的系統(tǒng),但是通常也需要指定那個(gè)系統(tǒng)的端口號(hào)。沒有端口號(hào),一個(gè)系統(tǒng)同時(shí)只能進(jìn)行一個(gè)單一的連接。端口號(hào)標(biāo)識(shí)允許一個(gè)獨(dú)立的系統(tǒng)連接到支持同時(shí)多個(gè)連接的主機(jī),所以連接必須指定端口號(hào)。在網(wǎng)絡(luò)應(yīng)用程序中,端口號(hào)是服務(wù)器工具的一個(gè)數(shù)字代碼。他們的作用是偵聽連接到他們自己固定的端口號(hào),這樣他們才能找到客戶端sockets。服務(wù)器sockets要為其服務(wù)的相關(guān)端口號(hào)進(jìn)行監(jiān)聽。當(dāng)他們被允許提供一個(gè)客戶端sockets連接時(shí),就會(huì)創(chuàng)建一個(gè)單獨(dú)的sockets連接,使用不同的端口號(hào)。以此實(shí)現(xiàn)持續(xù)監(jiān)控端口號(hào)的相

51、關(guān)服務(wù)??蛻舳藄ocket使用專用的本地端口號(hào),而不必使用其他socket來查找它們。通過指定他們想要連接的服務(wù)端的端口號(hào),來查找服務(wù)器應(yīng)用程序。通常是通過指定要連接的服務(wù)來指定端口號(hào)。 使用socket組件有客戶端sockets和服務(wù)器sockets兩個(gè)組件。它們?cè)试S你連接到其他的機(jī)器,并允許你通過這個(gè)連接讀寫信息。與每個(gè)sockets控件相關(guān)聯(lián)的是windows socket對(duì)象,它們是一個(gè)實(shí)用的終端socket連接。ssocket控件使用windows socket對(duì)象去封裝windows socket API 調(diào)用,所以不

52、需要你的應(yīng)用去關(guān)心怎么建立連接,也不需要去管理socket信息。1.使用客戶端sockets在你自己的頁面上添加一個(gè)客戶端socket組件(TClientSocket),把你的應(yīng)用變成一個(gè)TCP/IP客戶。指定你想連接的服務(wù)器socket和你希望服務(wù)器提供的服務(wù)。通過描述你想得到的連接,使客戶socket控件去完成連接服務(wù)。每個(gè)客戶socket控件都使用獨(dú)立的客戶windows socket對(duì)象(TClientWinSocket)去應(yīng)答連接中的客戶終端。使用客戶sockets:A、指定想得到的服務(wù)客戶socket組件有一個(gè)數(shù)字properties,通過它可以指定你要連接到的服務(wù)器系統(tǒng)

53、和端口??梢杂弥鳈C(jī)名指定所需要的服務(wù)器系統(tǒng)。如果您不知道主機(jī)名,或者您是關(guān)注服務(wù)器的查找速度,您可以通過使用IP地址屬性來指定服務(wù)器系統(tǒng)的地址。您必須指定一個(gè)IP地址或者主機(jī)名。如果您都指定了,客戶socket控件會(huì)自動(dòng)使用主機(jī)名。除了服務(wù)器系統(tǒng),您還必須指定客戶socket將連接到的服務(wù)器系統(tǒng)的端口。您可以使用Port property來指定服務(wù)端口號(hào)。也可以在Service property中使用服務(wù)名。如果您同時(shí)指定了端口號(hào)和服務(wù)的名稱,客戶socket控件會(huì)自動(dòng)使用服務(wù)名。B、建立連接當(dāng)你在客戶socket控件中設(shè)置完成了你想要連接的服務(wù)器的屬性時(shí),你就可以通過Op

54、en的方法來進(jìn)行連接。如果你希望你的應(yīng)用程序在啟動(dòng)時(shí)能夠自動(dòng)連接,在設(shè)計(jì)時(shí),通過使用Object Inspector設(shè)置Active property為true來實(shí)現(xiàn)。當(dāng)成功連接到服務(wù)器socket后,可以使用你的客戶端socket控制相關(guān)的客戶的windows socket object獲取有關(guān)連接的信息。使用Socket property訪問客戶端窗口對(duì)象。一個(gè)properties,讓您確定在客戶端和服務(wù)器的連接中使用的地址和端口號(hào)。當(dāng)使用一個(gè)windows socket API調(diào)用時(shí),可以通過使用SocketHandl

55、e property去獲得socket連接中使用的handle。也可以用Handle property去訪問windows,能夠獲得socket連接的信息。AsyncStyles property可以決定windows handle要接收信息類型。當(dāng)通訊完成要將socket連接關(guān)閉時(shí),可以調(diào)用Close方法來關(guān)閉連接。如果連接由服務(wù)器端進(jìn)行關(guān)閉,你會(huì)收到一個(gè)ondisconnect的事件通知。2. 使用服務(wù)器sockets在你自己的頁面添加一個(gè)服務(wù)端Socket組件使你的應(yīng)用成為一個(gè)TCP / IP的服務(wù)器。你可以指定要服務(wù)器sockets提供的服務(wù)或當(dāng)

56、探查到客戶端請(qǐng)求時(shí)使用哪個(gè)端口。您可以使用服務(wù)器socket控件來監(jiān)視和允許客戶端連接請(qǐng)求。每個(gè)socket服務(wù)器控件都有一個(gè)單獨(dú)的windows socket Object(TServerWinSocket)來回答偵聽到的連接。它使用一個(gè)服務(wù)器客戶winodws socket Object(TServerClientWinSocket)來應(yīng)答所有連接的的客戶socket。A. 指定端口在你的服務(wù)器socket還不能監(jiān)聽客戶請(qǐng)求時(shí),你需要給你的監(jiān)聽服務(wù)指定一個(gè)端口??梢酝ㄟ^Port property來指定端口。如果您的服務(wù)器應(yīng)用程序提供了一個(gè)標(biāo)

57、準(zhǔn)服務(wù),該服務(wù)將使用自定義相關(guān)端口??梢酝ㄟ^Service property指定固定的端口號(hào)。使用Service property,可以避免端口號(hào)的設(shè)置錯(cuò)誤。如果同時(shí)指定了Port property和Service property,服務(wù)socket將自動(dòng)使用服務(wù)名。B.監(jiān)聽客戶請(qǐng)求當(dāng)你在server socket控件上設(shè)置了端口號(hào),就可以通過調(diào)用Open方法來監(jiān)聽連接??梢酝ㄟ^使用Object Inspector設(shè)置Active 屬性為true來設(shè)置應(yīng)用程序在啟動(dòng)時(shí)可以自動(dòng)監(jiān)聽連接。C.連接到客戶端。監(jiān)聽服務(wù)socket控

58、件會(huì)自動(dòng)接受監(jiān)聽到的連接請(qǐng)求。如果沒有收到通知,OnClientConnetc事件將發(fā)生。D.取得關(guān)于連接的信息當(dāng)你的服務(wù)器socket啟動(dòng)了監(jiān)聽連接,就可以通過與你服務(wù)器socket控件相關(guān)聯(lián)的服務(wù)器windows socket object來獲取連接的信息??梢杂肧ocket property來訪問server windows socket。object windows socket object的屬性可以讓你發(fā)現(xiàn)客戶端socket連接的所有活動(dòng),通過socket服務(wù)器控件允許連接。使用Handle屬性來訪問通過sock

59、et連接接收到的信息。所有活動(dòng)的,連接的客戶應(yīng)用都是是通過服務(wù)、客戶windows socket bject (TServerClientWinSocket)封裝的??梢酝ㄟ^server windows socket object的屬性來讀取這些信息。這些server client windows socket object的屬性可以讓你決定哪些地址和端口號(hào)給連接的客戶和服務(wù)器socket使用。如果你使用windows socket API調(diào)用,那么可以通過SocketHandle屬性來獲取socket連接時(shí)所使用的handle。也可以通過Handle屬性去讀取windows從socket連接處獲得的信息。windows handle將接收的信息類型由AsyncStyles屬性來決定。E.關(guān)閉連接可以通過調(diào)用Close方法來關(guān)閉監(jiān)聽連接。這時(shí)所有打開著的以及連接到客戶應(yīng)用的連接將會(huì)關(guān)閉,尚未同意的連接將會(huì)取消,然后會(huì)關(guān)閉監(jiān)聽連接,使你的服務(wù)socket控件不在接受任何新的連接請(qǐng)求。如果客戶端關(guān)閉了他們連接到你的server socket的獨(dú)立的連接時(shí),服務(wù)端會(huì)在OnClientDisconnect事件中得到相關(guān)訊息。2.4.1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論