資源描述:
《多線程web server設(shè)計(jì)與實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、多線程WebServer的設(shè)計(jì)與實(shí)現(xiàn)班級(jí):研1428班學(xué)號(hào):2141221064姓名:王嬌一、概述如今,上網(wǎng)已成為最熱門話題,通過Internet,我們既能獲取信息又能發(fā)布信息,而迅速發(fā)展的Web技術(shù)更是給Internet應(yīng)用提供了一個(gè)很好的發(fā)展方向。當(dāng)今的許多應(yīng)用都是基于web技術(shù)的,如電子商務(wù)、視頻會(huì)議、遠(yuǎn)程醫(yī)療診斷等。由于HTML語言的標(biāo)準(zhǔn)統(tǒng)一性,只要在設(shè)備里建立一個(gè)微型web服務(wù)器,人們就可以使用現(xiàn)有的Web瀏覽器與該設(shè)備進(jìn)行雙向交互、接收或發(fā)送信息。因此,針對(duì)微型web服務(wù)器的研究和應(yīng)用,具有重大的意義,它為我們管理、控制和監(jiān)測各種各樣的設(shè)備提供了一個(gè)
2、很好的途徑一基于Internet,也就是說,只要設(shè)備接入了Internet,我們就可以在世界上的任何地方十分方便地控制、操縱那些配備有微型Web服務(wù)器的設(shè)備。二、設(shè)計(jì)內(nèi)容1)熟悉WWW服務(wù)器和WEB服務(wù)器的工作原理;2)熟悉套接字編程的相關(guān)知識(shí);3)完成一個(gè)簡單的WEB服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn),要求能夠通過HTTPGET命令獲得一個(gè)簡單的HTML文件;4)運(yùn)行該服務(wù)器,并編寫一個(gè)簡單的HTML文件完成測試。三、實(shí)驗(yàn)原理HTTP協(xié)議的作用原理包括四個(gè)步驟:1)連接:Web瀏覽器與Web服務(wù)器建立連接,打開一個(gè)稱為socket(套接字)的虛擬文件,此文件的建立標(biāo)志著連接建
3、立成功。2)請(qǐng)求:Web瀏覽器通過socket向Web服務(wù)器提交請(qǐng)求。HTTP的請(qǐng)求一般是GET或POST命令(POST用于FORM參數(shù)的傳遞)。GET命令的格式為:GET路徑/文件名HTTP/1.0文件名指出所訪問的文件,HTTP/1.0指出Web瀏覽器使用的HTTP版本。3)應(yīng)答:Web瀏覽器提交請(qǐng)求后,通過HTTP協(xié)議傳送給Web服務(wù)器。Web服務(wù)器接到后,進(jìn)行事務(wù)處理,處理結(jié)果又通過HTTP傳回給Web瀏覽器,從而在Web瀏覽器上顯示出所請(qǐng)求的頁面。三、實(shí)驗(yàn)方法Java實(shí)現(xiàn)Web服務(wù)器功能的程序設(shè)計(jì)根據(jù)上述HTTP協(xié)議的作用原理,實(shí)現(xiàn)GET請(qǐng)求的Web服
4、務(wù)器程序的方法如下:101)創(chuàng)建ServerSocket類對(duì)象,監(jiān)聽端口8080。2)等待、接受客戶機(jī)連接到端口8080,得到與客戶機(jī)連接的socket;3)創(chuàng)建與socket字相關(guān)聯(lián)的輸入流instream和輸出流outstream;4)從與socket關(guān)聯(lián)的輸入流instream中讀取一行客戶機(jī)提交的請(qǐng)求信息,請(qǐng)求信息的格式為:GET路徑/文件名HTTP/1.05)從請(qǐng)求信息中獲取請(qǐng)求類型。如果請(qǐng)求類型是GET,則從請(qǐng)求信息中獲取所訪問的HTML文件名。沒有HTML文件名時(shí),則以index.html作為文件名;6)如果HTML文件存在,則打開HTML文件,把
5、HTTP頭信息和HTML文件內(nèi)容通過socket傳回給Web瀏覽器,然后關(guān)閉文件。否則發(fā)送錯(cuò)誤信息給Web瀏覽器;7)關(guān)閉與相應(yīng)Web瀏瀏覽器連接的socket字。四、實(shí)驗(yàn)過程1.首先打開開發(fā)工具M(jìn)yEclipse8.5MyEclipse8.5是一個(gè)開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。向MyEclipse8.5中輸入如下Web服務(wù)器程序源碼:importjava.io.*;importjava.net.*;publicclassWebServer{publicstaticvoidmai
6、n(Stringargs[]){inti=1,PORT=8080;ServerSocketserver=null;Socketclient=null;try{server=newServerSocket(PORT);system.out.println("WebServerislisteningonport"+server.getLocalPort());for(;;){client=server.accept();//接受客戶機(jī)的連接請(qǐng)求newConnectionThread(client,i).start();i++;10}}catch(Exceptione
7、){System.out.println(e);}}}/*ConnnectionThread類完成與一個(gè)Web瀏覽器的通信*/classConnectionThreadextendsThread{Socketclient;//連接Web瀏覽器的socket字intcounter;//計(jì)數(shù)器publicConnectionThread(Socketcl,intc){client=cl;ounter=c;}publicvoidrun()//線程體{try{StringdestIP=client.getInetAddress().toString();//客戶機(jī)IP地
8、址intdestport