freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

簡易web服務(wù)器研究—免費(fèi)畢業(yè)設(shè)計(jì)論文-文庫吧

2024-11-13 17:25 本頁面


【正文】 實(shí)現(xiàn)發(fā)布,進(jìn)行管理。對于 WEB系統(tǒng)而言,在眾多的 WEB頁面中,有一個(gè)稱為 WEB主頁的頁面,它是訪問者瀏覽 WEB系統(tǒng)的起點(diǎn)。每個(gè) WEB頁面都具有唯一的地址,稱為統(tǒng)一資源定位符( URL),URL由存儲此頁面的計(jì)算機(jī)名和此頁面的確切路徑構(gòu)成。 WEB頁面是超文本標(biāo)記語言( HTML)編寫 的。 HTML是一種嵌入式語言,通過在普通文本中嵌入各種標(biāo)記( TAG),使普通文本具有了超級文本的功能。根據(jù) WEB 頁面的內(nèi)容,可將WEB頁面分為三種類型:靜態(tài)頁面,動態(tài)頁面,目錄列表頁面。 WEB 系統(tǒng)的基本原理是請求 /響應(yīng) 在客戶端,瀏覽器接受用戶輸入的網(wǎng)頁地址( URL)并進(jìn)行分析,從而得到網(wǎng)頁的文件名字和存放網(wǎng)頁的計(jì)算機(jī)地址以及服務(wù)程序的端口號,首先根據(jù)計(jì)算機(jī)地址及端口號與服務(wù)器建立連接,然后把網(wǎng)頁名稱及瀏覽器本身的有關(guān)信息按照一定的格式組織起來,發(fā)給服務(wù)器,這就是‘請求’。比如用戶輸入 (1) 計(jì)算機(jī)名稱為 (2) 端口號為 80( 服務(wù)的默認(rèn)端口號) (3) 頁面的文件名為 瀏覽器就與 kulin上端口號為 80的服務(wù)程序建立連接,并把類似下面的數(shù) 圖 Web 工作原理 10 據(jù)發(fā)過(作為服務(wù)‘請求’): GET / HTTP/ Accept:image/gif,image/xxbitmap,application/,*/* AcceptLanguage:ch UApixels:800*600 UAcolor:color16 UAOS:Windows xp UACPU: UserAgent:Mozilla/(patible’ 。Window XP Host: Connection:KeepAlive 其中第一行說明了文件名稱( )、請求的類型( GET)及瀏覽器支持的協(xié)議版本( HTTP/) 服務(wù)器端接受到請求后,對其進(jìn)行分析,解析出網(wǎng)頁的文件名稱及其他信息 (比如請求的類型、處 理要求等 ),根據(jù)網(wǎng)頁的文件名稱到磁盤上提取文件內(nèi)容,把文件內(nèi)容和一些必要的說明信息打包后發(fā)給瀏覽器,然后斷開連接,這就是“響應(yīng)”。 (瀏覽器接到文件內(nèi)容后就將其中的內(nèi)容顯示出來了 )比如對于文件長度為 2559B的 ,可以發(fā)送如下數(shù)據(jù)作為“響應(yīng)”: HTTP/ 200 OK Server: Date:WED,20 may 2021 12:45:21 Contenttype:text/html Contentlength:2559 LastModified:Sun,22 may 2021 14:21:50 接下來是 上述數(shù)據(jù)分 2 大部分,第 1部分為“頭”,其中,第 1行是狀態(tài)行,包括服務(wù)器執(zhí)行的HTTP 版本及本次響應(yīng)的狀態(tài)碼。后 4 行分別說明了服務(wù)器名稱、當(dāng)前日期、數(shù)據(jù)類型、數(shù)據(jù)長度、最后修改的日期和時(shí)間。第 2部分為數(shù)據(jù)“體”,是“請求”要求傳送的數(shù)據(jù),它跟在 1個(gè)空行之后。 當(dāng)然,客戶端和服務(wù)器之間還可能有一些中間環(huán)節(jié),比如代理服務(wù)器、網(wǎng)關(guān)、“隧道”等,在此我們先不予考慮。 11 WEB 服務(wù)器 /瀏覽器的通信 要 完成 WEB服務(wù),除了網(wǎng)絡(luò)通信鏈路的建立和拆除之外至少還要有兩方面的功能:“分析請求”和“構(gòu)造響應(yīng)”。 分析請求 如前文所述,“請求”的第 1行數(shù)據(jù)是最重要的,它的格式是: 方法 資源地址 HTTP版本號 回車換行 “方法”主要有 3種: GET:要求必須返回一定的內(nèi)容。有時(shí)還必須根據(jù)“請求”的要求先對內(nèi)容做一定的處理 (比如解壓縮或根據(jù)時(shí)間進(jìn)行過濾 )。 HEAD:處理辦法和 GET 完全相同,但要求只返回“頭”,而不可返回任何實(shí)質(zhì)內(nèi)容(“ 體 ” )。 POST:用來處理網(wǎng)頁的附屬內(nèi)容,比如“注解” 、數(shù)據(jù)回送等。 作為簡單的服務(wù)器,我們只考慮第一行,且只處理 GET請求,版本號不予理睬。 構(gòu)造響應(yīng) 如前文所述,響應(yīng)的第 1行是狀態(tài)行,非常重要,格式如下: HTTP 版本號 狀態(tài)碼 狀態(tài)文字說明 回車換行 版本號可取 HTTP/;狀態(tài)碼是 3位數(shù)字,根據(jù)情況按表 。 表 狀態(tài)碼值 代碼特征 含義 舉例 1 開頭的 2 開頭的 3開頭的 4開頭的 5開頭的 保留未用 成功 需要進(jìn)一步處理 客戶斷錯(cuò)誤 服務(wù)器端錯(cuò)誤 比如 200表示處理成功 比如 400表示“請求”有錯(cuò), 404表示找不到客戶指定的文件 作為簡易的服務(wù)器,“響應(yīng)”可以只返回狀態(tài)行和文件內(nèi)容,即送回如下的內(nèi)容: HTTP/ 200 OK 狀態(tài)行 一個(gè)空行 12 文件內(nèi)容 文件內(nèi)容 13 第三章 系統(tǒng)采用技術(shù)介紹 Winsock 技術(shù)簡介 什么是 Windows Sockets 規(guī)范 ? Windows Sockets規(guī)范是一套開放的、支持多種協(xié)議的 Windows下的網(wǎng)絡(luò)編程接口。從1991年的 1995年的 ,經(jīng)過不斷完善并在 Intel、 Microsoft、 Sun、 SGI、Informix、 Novell等公司的全力支持下,已成為 Windows網(wǎng)絡(luò)編程上的標(biāo)準(zhǔn)。 Windows Sockets 規(guī)范是建立在 Bekeley 套接口模型上的。這個(gè)模型現(xiàn)在已是 TCP/IP網(wǎng)絡(luò)的標(biāo)準(zhǔn)。 Windows Sockets規(guī)范是以 . Berkeley 大學(xué) UNIX中流行的 Socket接口為范例而設(shè)定的一套 Windows 網(wǎng)絡(luò)接口編程。這個(gè)規(guī)范不僅包含了我們所熟悉的 Berkeley Socket 套接口風(fēng)格的庫函數(shù),也包含了針對 Windows 的擴(kuò)展庫函數(shù),這樣一來使程序員能充分利用 Windows消息驅(qū)動機(jī)制進(jìn)行相應(yīng)的編程。 應(yīng)用程序調(diào)用 Windows Sockets的 API實(shí)現(xiàn)相互之間的通訊。 Windows Sockets又利用下層的網(wǎng)絡(luò)通訊協(xié)議功能和操作系統(tǒng)調(diào)用實(shí)現(xiàn)實(shí)際的通訊工作。它們之間的關(guān)系如圖 。 圖 應(yīng)用程序與 sockets 的關(guān) 系 14 Windows Sockets 規(guī)范發(fā)展歷程 Windows Sockets 規(guī)范發(fā)展至今已經(jīng)經(jīng)歷了三個(gè)階段,首先是 Windows 的發(fā)布, Windows Sockets 代表了網(wǎng)絡(luò)軟件供應(yīng)商和用戶協(xié)會細(xì)致周到的工作的結(jié)晶。Windows Sockets 各自的符合 Windows Sockets標(biāo)準(zhǔn)的實(shí)現(xiàn)和應(yīng)用程序。 為了更能滿足個(gè)系統(tǒng)的要求,有發(fā)布了之后的 版本 Windows Sockets 繼承了Windows Sockets ,并且僅在一些絕對必要的地方作了改動。這些改動都是基于不少公司在創(chuàng)作 Windows Sockets 。 Windows Sockets 包含了一些更加清晰的說明和對 Windows Sockets 。還有很多的改動就不做一一介紹了。 現(xiàn)在大多的網(wǎng)絡(luò)編程的規(guī)范已經(jīng)是 Windows Socket 2,它在 ,具體的改動在這里也不做具體的介紹了。 套接口 套接口是從英文單詞 socket 翻譯過來的,它是網(wǎng)絡(luò)通信的基本構(gòu)件。套接口是可以被命名和尋址的通信端點(diǎn),使用中的每一個(gè)套接字都有它的類型和一個(gè)與之相連的進(jìn)程。 套接口存在于通信區(qū)域中。通信區(qū)域也叫地址族,它是一個(gè)抽象的概念,主要用于將通過套接口通信的進(jìn)程的共有特性綜合在一起。套接口通常和同一個(gè)域中的套接口交換數(shù)據(jù)(數(shù)據(jù)交換也可能穿越域的界限,但這時(shí)一定要執(zhí)行某種解釋程序)。 Windows Sockets 規(guī)范支持單一的通訊域,即 Inter域。各種進(jìn)程使用這個(gè)域互相之間用 Inter協(xié)議族來進(jìn)行通訊( Windows Sockets ,例如 Windows Sockets 2)。 套接口可以根據(jù)通訊性質(zhì)分類;這種性質(zhì)對于用戶是可見的。應(yīng)用程序一般僅在同一類的套接口間通訊。不過只要底層的通訊協(xié)議允許,不同類型的套接口間也照樣可以通訊。用戶目前可以使用兩種套接口,即流套接口和數(shù)據(jù)報(bào)套接口。流套接口提供了雙向的,有序的,無重復(fù)并且無記錄邊界的數(shù)據(jù)流服務(wù)。數(shù)據(jù)報(bào)套接口支持雙向的數(shù)據(jù)流,但并不保證是可靠,有序,無重復(fù)的。也就是說,一個(gè)從數(shù)據(jù)報(bào)套接口接收信息的進(jìn)程有可能發(fā)現(xiàn)信息重復(fù)了,或者和發(fā)出時(shí)的順序不同。數(shù)據(jù)報(bào)套接口的 一個(gè)重要特點(diǎn)是它保留了記錄邊界。對于這一特點(diǎn),數(shù)據(jù)報(bào)套接口采用了與現(xiàn)在許多包交換網(wǎng)絡(luò)(例如以太網(wǎng))非常類似的模型。 15 VisualC++ 簡介 Visual C++是運(yùn)行于 Windows 平臺上的交互式的可視化集成開發(fā)環(huán)境,它是美國 Microsoft 公司開發(fā)的 Microsoft Visual Studio 套件的一部分。跟其他的可視化集成開發(fā)環(huán)境(如 Visual Basic、 Delphi、 C++ Builder)一樣, Visual C++ 集程序的代碼編輯、編譯、連接和調(diào)試等功能于一體,給編程 人員提供了一個(gè)完整方便的開發(fā)界面和許多有效的輔助開發(fā)工具。 Visual C++ 的應(yīng)用程序向?qū)Э梢詾楹艽笠徊糠诸愋偷某绦蛱峁┛蚣艽a,用戶不用書寫程序代碼,只需按幾個(gè)按鈕就可以生成一些完整的可以運(yùn)行的程序。 16 第四章 系統(tǒng)設(shè)計(jì) 界面設(shè)計(jì) 界面設(shè)計(jì)要求 對于應(yīng)用軟件來說,一個(gè)基本現(xiàn)實(shí)就是:用戶界面是面向用戶的。用戶需要的是開發(fā)者開發(fā)的應(yīng)用軟件滿足其需求,并且易于使用。界面設(shè)計(jì)的重要性有這么幾個(gè)原因:首先,用戶界面越直觀,就越易用,越易用就越便宜。因?yàn)榻缑嬖胶茫嘤?xùn)用戶就越容易,降低 了培訓(xùn)成本;界面越出色,用戶就越少求助,降低了客戶支持成本。其次,界面越出色,用戶就喜歡使用,增強(qiáng)了開發(fā)者工作的滿意度。 界面制作方法 該 WEB 服務(wù)器是通過 C++編程來實(shí)現(xiàn)的。首先新建一個(gè) MFC Appwizard(exe)工程 ,然后建立一個(gè)對話框。接著在對話框里面添加四個(gè)按鈕,一個(gè)列表框以及兩個(gè)靜態(tài)文本框,改變各控件的名稱,調(diào)整對話框及各控件的大小,使界面美觀大方。 偵聽模塊設(shè)計(jì) 服務(wù)器端操作 Socket(套接字) (一) 在初始化階段調(diào)用 WSAStartup() 此函數(shù)在應(yīng) 用程序中初始化 Windows Sockets DLL,只有此函數(shù)調(diào)用成功后,應(yīng)用程序才可以再調(diào)用其他 Windows Sockets DLL中的 API函數(shù)。在程 序 中調(diào)用該函數(shù)的形式如下: WSAStartup((WORD)((18|1),( LPWSADATA) amp。WSAData),其中 (18|1)表示我們用的是 版本, WSAata 用來存儲系統(tǒng)傳回的關(guān)于 WinSocket 的資料。 17 (二) 建立 Socket 初始化 WinSock 的動態(tài)連接庫后,需要在服務(wù)器端建立一個(gè)監(jiān)聽的 Socket,為此 可以調(diào)用 Socket()函數(shù)用來建立這個(gè)監(jiān)聽的 Socket,并定義此 Socket 所使用 的 通 信 協(xié) 議 。 此 函 數(shù) 調(diào) 用 成 功 返 回 Socket 對 象 , 失 敗 則 返 回INVALID_SOCKET(調(diào)用 WSAGetLastError()可得知原因,所有 WinSocket 的函數(shù) 都可以使用這個(gè)函數(shù)來獲取失敗的原因 )。 SOCKET PASCAL FAR socket( int af, int type, int protocol ) 參數(shù) : af:目前只提供 PF_INET(AF_INET); type: Socket 的類型 (SOCK_STREAM、 SOCK_DGRAM); protocol:通訊協(xié)定 (如果使用者不指定則設(shè)為 0); 如果要建立的是遵從 TCP/IP 協(xié)議的 socket,第二個(gè)參數(shù) type 應(yīng)為SOCK_STREAM,如為 UDP(數(shù)據(jù)報(bào))的 socket,應(yīng)為 SOCK_DGRAM。 (三) 綁定端口 接下來要為服務(wù)器端定義的這個(gè)監(jiān)聽的 Socket 指定一個(gè)地址及端口( Port),這樣客戶端才知道待會要連接哪一個(gè)地址的哪個(gè)端口,為此我們要調(diào)用 bind()函數(shù),該函數(shù)調(diào)用成功返回 0,否則返回 SOCKET_ERROR。 int PASCAL FAR bind( SOCKET s, const struct sockaddr FAR *name,int namelen )。 參 數(shù): s: Socket 對象名; name: Socket 的地址值,這個(gè)地址必須是執(zhí)行這個(gè)程式所在機(jī)器的 IP 地址; namelen: name 的長度; 如果使用者不在意地址或端口的值,那么可以設(shè)定地址為 INADDR_ANY,及 Port 為 0,Windows Sockets 會自動將其設(shè)定適當(dāng)之地址及 Port (1024 到 5000 之 間的值 )。此后可以調(diào)用getsockname()函數(shù)來獲知其被設(shè)定的值。 (四) 監(jiān)聽 當(dāng)服務(wù)器端的 Socket 對象綁定完成之后 ,服務(wù)器端必須建立一個(gè)監(jiān)聽的隊(duì)列來接收客戶端的連接請求。 listen()函數(shù)使服務(wù)器端的 Socket 進(jìn)入監(jiān)聽狀態(tài),并設(shè)定
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1