計算機(jī)通信與實(shí)驗(yàn)7_第1頁
計算機(jī)通信與實(shí)驗(yàn)7_第2頁
計算機(jī)通信與實(shí)驗(yàn)7_第3頁
計算機(jī)通信與實(shí)驗(yàn)7_第4頁
計算機(jī)通信與實(shí)驗(yàn)7_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第七章第七章 基本網(wǎng)基本網(wǎng)絡(luò)開發(fā)技術(shù)絡(luò)開發(fā)技術(shù)2n7.1 網(wǎng)絡(luò)應(yīng)用開發(fā)的基礎(chǔ)知識n7.2 c/s編程模式和套接字n7.3 b/s編程模式及相關(guān)技術(shù)n7. 4 習(xí) 題 基本網(wǎng)絡(luò)開發(fā)技術(shù)基本網(wǎng)絡(luò)開發(fā)技術(shù)3網(wǎng)絡(luò)應(yīng)用開發(fā)的基礎(chǔ)知識網(wǎng)絡(luò)應(yīng)用開發(fā)的基礎(chǔ)知識n7. 1 網(wǎng)絡(luò)應(yīng)用開發(fā)的基礎(chǔ)知識4服務(wù)器和客戶的概念服務(wù)器和客戶的概念n一般地,把那些提供網(wǎng)絡(luò)服務(wù)的應(yīng)用程序稱為服務(wù)器程序(也可簡稱為服務(wù)器),接受網(wǎng)絡(luò)服務(wù)的應(yīng)用程序稱為客戶程序(也可簡稱為客戶),它們之間的通信交換稱為客戶服務(wù)器交互模式(client-server paradigm of interaction),簡稱c/s模式,或c/s結(jié)構(gòu)。n通常

2、地,這個術(shù)語指一個被動地等待通信的、能夠提供某種網(wǎng)絡(luò)服務(wù)的程序,而不是運(yùn)行它的計算機(jī)。然而,當(dāng)一臺計算機(jī)被用來運(yùn)行一個或幾個服務(wù)器程序時,這臺計算機(jī)本身有時也被稱作服務(wù)器。n準(zhǔn)確地說,服務(wù)器( server)這個術(shù)語來指那些運(yùn)行的程序而不是計算機(jī)。5標(biāo)示網(wǎng)絡(luò)應(yīng)用標(biāo)示網(wǎng)絡(luò)應(yīng)用網(wǎng)絡(luò)應(yīng)用的網(wǎng)絡(luò)應(yīng)用的定位地址定位地址n應(yīng)用的網(wǎng)絡(luò)定位地址= 計算機(jī)的ip地址 + 應(yīng)用對應(yīng)的tcp/udp端口號6標(biāo)示網(wǎng)絡(luò)應(yīng)用標(biāo)示網(wǎng)絡(luò)應(yīng)用網(wǎng)絡(luò)應(yīng)用的網(wǎng)絡(luò)應(yīng)用的定位地址定位地址n常見應(yīng)用服務(wù)的端口web瀏覽httptcp80發(fā)送郵件smtptcp25接收郵件pop3tcp110文件傳輸ftptcp20,217兩類不同的編程模式

3、兩類不同的編程模式nc/s模式n絕大部分的網(wǎng)絡(luò)應(yīng)用程序從根本上而言都是c/s模式.nc/s模式下,一個應(yīng)用通常包含了兩部分程序:服務(wù)器程序和客戶程序,它們需要分別安裝、設(shè)置。對于普通的計算機(jī)用戶而言,為了獲取網(wǎng)絡(luò)服務(wù)就必須安裝和設(shè)置特定的客戶程序,未免要求過高。8c/sc/s編程模式和套接字編程模式和套接字n7.2.1 c/s編程模式n7.2.2 套接字接口n7.2.3 實(shí)現(xiàn)套接字api的過程n7.2.4 套接字api的應(yīng)用示例9c/sc/s編程模式編程模式n對于一個服務(wù)器程序而言,在同一時刻可能有多個客戶來請求服務(wù),這時有兩種方案:10c/sc/s編程模式編程模式n一個服務(wù)器應(yīng)用程序由兩部分

4、組成:一部分負(fù)責(zé)接收請求和生成新控制線程,另一部分包含處理單個請求完成服務(wù)的代碼。n在服務(wù)器程序設(shè)計時,必須考慮到并發(fā)的情況,并通過動態(tài)創(chuàng)建來解決這個問題。11c/sc/s編程模式編程模式n服務(wù)器同時又多個控制線程工作,客戶如何找到屬于自己的線程并與它交互呢?12套接字接口套接字接口n套接字是從英文單詞socket翻譯而來,它是網(wǎng)絡(luò)通信的基本構(gòu)件。n可以把套接字想象成連接應(yīng)用和底層網(wǎng)絡(luò)實(shí)現(xiàn)的“門”,發(fā)送信息的一方把信息送出 “門”,底層的網(wǎng)絡(luò)實(shí)現(xiàn)保證信息正確無誤地到達(dá)接收發(fā)的“門”口供接收.n套接字是網(wǎng)絡(luò)傳輸資源的描述符(指針)。n套接字最早是u.c. berkeley大學(xué)bsd unix系統(tǒng)

5、中的一部分13n以windows sockets為例來看看應(yīng)用程序與socket之間的關(guān)系,如下圖:套接字接口套接字接口141socket過程實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程15實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程n下圖給出了最簡單的服務(wù)器和客戶套接字api過程。16n1socket過程實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程17n2close過程實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程18n3bind過程實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程19n 3bind過程實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程20n3bind過程 例如, tcp/ip協(xié)議使用s

6、ockaddr_in來定義地址: struct sockaddr_in u_char sin_len; /*地址總長*/ u_char sin_family; /*地址簇*/ u_short sin_port; /*協(xié)議端口號*/ struct in_addr sin_addr; /*計算機(jī)ip地址*/ char sin_zero8; /*未用(置為0)*/ ;n sockaddr_in結(jié)構(gòu)的前兩個域正好對應(yīng)一般的sockaddr結(jié)構(gòu)的前兩個域,后三個域定義了tcp/ip協(xié)議所希望的確切地址格式。實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程21n3bind過程n有兩點(diǎn)值得注意實(shí)現(xiàn)套接字實(shí)現(xiàn)套接

7、字apiapi的過程的過程22n4listen過程實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程23n5accept過程 連接傳輸協(xié)議的服務(wù)器必須調(diào)用accept過程來接受下一個連接請求。如果隊列中已經(jīng)有請求, accept立即返回;如果還沒有請求到達(dá),系統(tǒng)掛起服務(wù)器直至有客戶建立連接。 accept調(diào)用的形式為: newsock = accept(socket, caddress, caddresslen)實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程24n6connect過程實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程25n7send、sendto與sendmsg過程 客戶與服務(wù)器都需要發(fā)送信

8、息。通??蛻舭l(fā)送請求,服務(wù)器發(fā)送應(yīng)答。如果套接字已連接,send過程可用來傳輸數(shù)據(jù)。send有四個參數(shù): send(socket, data, length, flag)實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程26n7send、sendto與sendmsg過程實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程27n7send、sendto與sendmsg過程實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程28n8recv、recvfrom與recvmsg過程 客戶與服務(wù)器都需要接收發(fā)自另一方的數(shù)據(jù)。套接字api提供了一些可用的過程。例如,一個應(yīng)用可以調(diào)用recv從一個連接的套接字接收數(shù)據(jù)。這個過程的

9、形式為: recv(socket, buffer, length, flags)實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程29n8recv、recvfrom與recvmsg過程實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程30n8recv、recvfrom與recvmsg過程實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程31實(shí)現(xiàn)套接字實(shí)現(xiàn)套接字apiapi的過程的過程n9輔助過程32套接字套接字apiapi的應(yīng)用示例的應(yīng)用示例 這個例子包含服務(wù)器和客戶兩個部分,服務(wù)器打開一個tcp端口,綁定到本地地址上去,等待客戶的連接,客戶的連接被服務(wù)器接受后,服務(wù)器發(fā)送信息到客戶并關(guān)閉這次連接、等待下一個客

10、戶的連接??蛻艚邮盏叫畔⒑?,顯示在終端上,結(jié)束客戶程序。2服務(wù)器代碼服務(wù)器代碼/* server.c - 使用tcp的服務(wù)器程序?qū)嵗a*/#ifndef win32#define closesocket close#include #include #include #include .詳細(xì)1客戶代碼客戶代碼/* client.c - 使用tcp的客戶程序?qū)嵗a*/ #ifndef win32 #define closesocket close #include #include . 詳細(xì) 33b/sb/s編程模式及相關(guān)技術(shù)編程模式及相關(guān)技術(shù)n7.3.1 web基礎(chǔ)知識n7.3.2 mvc

11、思想和在web開發(fā)中的使用n7.3.3 web編程語言中的通用概念n7.3.4 web編程的例子34webweb基礎(chǔ)知識基礎(chǔ)知識n1統(tǒng)一資源定位器n2web服務(wù)器與瀏覽器n3理解httpn4 html35統(tǒng)一資源定位器統(tǒng)一資源定位器nurl可以分為以下幾部分: protocol:/(協(xié)議) servername.domain(服務(wù)器名.域) directory/(目錄) file(文件)36統(tǒng)一資源定位器統(tǒng)一資源定位器n其他常見的url為: ftp:/服務(wù)器域名/目錄/文件。 ftp:/用戶名服務(wù)器域名/目錄/文件。 telnet:/服務(wù)器域名。 news:/新聞服務(wù)器域名/新聞組。37n用戶

12、可以使用url向服務(wù)器傳遞數(shù)據(jù)。典型應(yīng)用為向服務(wù)器方函數(shù)傳遞參數(shù)。例如:http:/服務(wù)器域名/目錄/文件/file.html?用戶名jamison&uid=300此url向file.html主頁傳遞一對參數(shù):用戶名jamison和uid300。n有時,需要在url中包含特殊字符如空隔或斜杠(/)。n這些特殊字符必須重新編碼以避免服務(wù)器出現(xiàn)問題。編碼過程(有時指16進(jìn)制編碼)包括將特殊字符用其16進(jìn)制的數(shù)取代。 例如:假設(shè)用戶需要在url中列出用戶全名:統(tǒng)一資源定位器統(tǒng)一資源定位器38webweb服務(wù)器與瀏覽器服務(wù)器與瀏覽器nweb服務(wù)器是web的內(nèi)容提供者。它響應(yīng)客戶端請求,并向客戶

13、端提供某種形式的數(shù)據(jù)。n這些數(shù)據(jù)采用超文本標(biāo)記語言(html)。nweb瀏覽器是web的客戶端。瀏覽器包括與web服務(wù)器建立通信所需的軟件及轉(zhuǎn)換,并顯示從服務(wù)器方返回數(shù)據(jù)的軟件。n常見的web服務(wù)器有:apache http server (/)microsoft internet information server (iis, http:/ 80端口。n客戶/服務(wù)器傳輸過程可分為四個基本步驟:1)瀏覽器與服務(wù)器建立連接;2)瀏覽器向服務(wù)器請求文檔;3)服務(wù)器響應(yīng)瀏覽器請求;4)斷開連接。nhttp是一種無狀態(tài)協(xié)議,它不維護(hù)連接的狀態(tài)信息。40理解

14、理解httphttpn為了使服務(wù)器與客戶端通信成為可能,http協(xié)議建立了一種由請求和響應(yīng)消息組成的web語言。n客戶請求包含以下信息:41理解理解httphttp常用的請求方法有:get請求指定的文檔head僅請求文檔頭post請求服務(wù)器接收指定文檔作為可執(zhí)行的信息42理解理解httphttp如果客戶采用某種方法獲取數(shù)據(jù)(如post),數(shù)據(jù)就放在頭(header)之后;否則客戶機(jī)等待從服務(wù)器傳來的響應(yīng)。服務(wù)器響應(yīng)包括以下關(guān)鍵部分:43理解理解httphttphttp定義了多組返回給瀏覽器的狀態(tài)碼。狀態(tài)碼是三位十進(jìn)制數(shù),狀態(tài)碼的最高位表明狀態(tài)碼的類別,常見的有以下類別:44htmlhtmln

15、超文本標(biāo)記語言是所有瀏覽器都可以理解的標(biāo)準(zhǔn)語言。它是一組標(biāo)明web頁面內(nèi)容的標(biāo)記組成。n html與平臺無關(guān),因此,可以高效地從一個計算機(jī)環(huán)境傳輸?shù)搅硪粋€計算機(jī)環(huán)境。45htmlhtmlhtml使用標(biāo)記指明信息的表現(xiàn)形式,標(biāo)記的語法格式如下:46htmlhtmlhtml web頁面包含三個部分:以表示html文件的開始,表示html文件的結(jié)束;和包圍的部分是html文件的頭部,包含一些控制信息;和包含的是主體部分,是直接顯示的正文部分?;窘Y(jié)構(gòu)如下: sample pagehello world!47mvcmvc思想和在思想和在webweb開發(fā)中的使用開發(fā)中的使用nmvc最初是在smallta

16、lk-80中被用來構(gòu)建用戶界面的。nm代表模型model, v代表視圖 view, c代表控制器controller。nmvc的目的是增加代碼的重用率,減少數(shù)據(jù)表達(dá),數(shù)據(jù)描述和應(yīng)用操作的耦合度。 48mvcmvc思想和在思想和在webweb開發(fā)中的使用開發(fā)中的使用mvc關(guān)系圖49mvcmvc思想和在思想和在webweb開發(fā)中的使用開發(fā)中的使用把這種思想拿到web開發(fā)中來,可以把web的開發(fā)放到三個不同層次上去看:n呈現(xiàn)層(presentation layer) 用戶ui,其實(shí)就是html、javascript等的用戶界面n商業(yè)邏輯層(business logic layer) 處理用戶請求,對

17、用戶輸入的信息按照商業(yè)邏輯的要求進(jìn)行處理,并把處理的結(jié)果交由呈現(xiàn)層返回給用戶。一般使用asp、php、perl、java等語言進(jìn)行處理n數(shù)據(jù)層(data layer) 對信息的抽象、描述和存儲,一般指存儲信息的數(shù)據(jù)庫系統(tǒng)、文件系統(tǒng)等50mvcmvc思想和在思想和在webweb開發(fā)中的使用開發(fā)中的使用3層web應(yīng)用:51webweb編程語言中的通用概念編程語言中的通用概念1request2response3application/context4session5server /system52webweb編程語言中的通用概念編程語言中的通用概念n1.request53webweb編程語言中的通用概念編程語言中的通用概念n2response54webweb編程語言中的通用概念編程語言中的通用概念n3. application/context 55webweb編程語言中的通用概念編程語言中的通用概念n4. session56webweb編程語言中的通用概念編程語言中的通用概

溫馨提示

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

評論

0/150

提交評論