版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
§11-1學(xué)生信息文件的上傳Java面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)目標(biāo)任務(wù)分析
學(xué)生基本信息即可以存儲(chǔ)在數(shù)據(jù)庫中,也可以存儲(chǔ)在文件中,還可以存儲(chǔ)在網(wǎng)絡(luò)服務(wù)器中。本任務(wù)就是通過Java網(wǎng)絡(luò)編程,將存儲(chǔ)學(xué)生信息的文件上傳至網(wǎng)絡(luò)服務(wù)器。
教學(xué)內(nèi)容1網(wǎng)絡(luò)基礎(chǔ)Socket類2多客戶端訪問處理43ServerSocket類網(wǎng)絡(luò)基礎(chǔ)
TCP/IP是TransmissionControlProtocol/InternetProtocol(傳輸控制協(xié)議/網(wǎng)際互聯(lián)協(xié)議)的縮寫,代表TCP協(xié)議和IP協(xié)議。TCP/IP是Internet上所有網(wǎng)絡(luò)和主機(jī)之間進(jìn)行交流所使用的共同“語言”,是Internet上使用的一組完整的標(biāo)準(zhǔn)網(wǎng)絡(luò)連接協(xié)議。通常所說的TCP/IP協(xié)議實(shí)際上包含了大量的協(xié)議和應(yīng)用,是且由多個(gè)獨(dú)立定義的協(xié)議組合在一起的一個(gè)協(xié)議簇。7OSI應(yīng)用6表示5會(huì)話4傳輸3網(wǎng)絡(luò)2數(shù)據(jù)鏈路1物理TCP/IP應(yīng)用
傳輸互聯(lián)網(wǎng)主機(jī)至網(wǎng)絡(luò)在模型中不存在圖11-1TCP/IP參考模型網(wǎng)絡(luò)基礎(chǔ)
應(yīng)用層:在TCP/IP模型中,應(yīng)用程序接口是最高層,它與OSI模型中的高3層的任務(wù)相同,用于提供網(wǎng)絡(luò)服務(wù),如文件傳輸(FTP)、遠(yuǎn)程登陸(TELNET)、域名服務(wù)(DNS)和簡單網(wǎng)絡(luò)管理(SNMP)等。
傳輸層:TCP/IP的傳輸層也被稱為主機(jī)至主機(jī)層,與OSI的傳輸層類似,主要負(fù)責(zé)主機(jī)到主機(jī)之間的端到端通信。該層使用了兩種端到端的協(xié)議來支持?jǐn)?shù)據(jù)的傳送,即TCP協(xié)議和UDP協(xié)議。
互聯(lián)網(wǎng)層:它是整個(gè)體系結(jié)構(gòu)的關(guān)鍵部分,其主要功能是處理來自傳輸層的分組,將分組形成數(shù)據(jù)包(IP數(shù)據(jù)包),并為該數(shù)據(jù)包進(jìn)行路徑選擇,最終將它們從源主機(jī)發(fā)送到目的主機(jī)。該層最常用的協(xié)議是IP協(xié)議,其它一些協(xié)議用來協(xié)助IP的操作。
主機(jī)至網(wǎng)絡(luò)層:TCP/IP模型的最低層,也稱網(wǎng)絡(luò)訪問層,包括能使用TCP/IP與物理網(wǎng)絡(luò)進(jìn)行通信的協(xié)議,對應(yīng)著OSI的物理層和數(shù)據(jù)鏈路層。TCP/IP標(biāo)準(zhǔn)在該層沒有定義具體的協(xié)議,只是指出主機(jī)必須使用某種協(xié)議與網(wǎng)絡(luò)連接,以便能在其上傳遞IP分組。這極大的提高了靈活性,使得TCP/IP協(xié)議可以運(yùn)行在任何網(wǎng)絡(luò)之上。網(wǎng)絡(luò)基礎(chǔ)
標(biāo)準(zhǔn)的URL由3部分組成:協(xié)議類型、主機(jī)名和路徑名。如圖11-3所示為山東電子職業(yè)技術(shù)學(xué)院的WWW服務(wù)器的URL。
其中,“http”指出要使用HTTP協(xié)議;“”指出要訪問的服務(wù)器的主機(jī)名;“Index.html”指出要訪問的主頁的路徑及文件名。圖11-3標(biāo)準(zhǔn)的URL組成網(wǎng)絡(luò)基礎(chǔ)URL的構(gòu)成包括:信息服務(wù)方式://信息資源的地址/文件路徑信息服務(wù)方式目前,WWW系統(tǒng)中編入U(xiǎn)RL的最普遍的服務(wù)連接方式有以下4種:lHTTP:使用HTTP協(xié)議,提供超文本信息服務(wù)的WWW信息資源空間。lFTP:使用FTP協(xié)議,提供文件傳送服務(wù)的FTP資源空間。lFILE:使用本地HTTP協(xié)議,提供超級文件信息服務(wù)的WWW信息資源空間。lTELNET:使用TELNET協(xié)議,提供遠(yuǎn)程登陸信息服務(wù)的TELNET信息資源空間。Socket類JDK中提供了ServerSocket類,表示服務(wù)器端,Socket類表示客戶端。通信時(shí),首先要?jiǎng)?chuàng)建代表服務(wù)器端的ServerSocket對象,該對象相當(dāng)于開啟一個(gè)服務(wù),并等待客戶端的連接,然后創(chuàng)建代表客戶端的Socket對象,并向服務(wù)器段端發(fā)出連接請求,服務(wù)器端響應(yīng)請求,兩者建立連接后可以通信。socketserversocket客戶端向服務(wù)器端發(fā)送請求服務(wù)器端響應(yīng)客戶端請求Socket類Socket常用構(gòu)造方法方法說明publicSocket(Stringhost,intport)構(gòu)造方法,遠(yuǎn)程服務(wù)器的地址和端口號publicSocket(InetAddresshost,intport)構(gòu)造方法,遠(yuǎn)程服務(wù)器的地址和端口號publicInputStreamgetInputStream()獲取輸入流publicOutputStreamgetOutputStream()獲取輸出流publicvoidclose()關(guān)閉socketServerSocket類ServerSocket常用構(gòu)造方法方法說明publicServerSocket(intport)構(gòu)造方法,創(chuàng)建綁定到特定端口的服務(wù)器套接字publicSocketaccept()偵聽并接受到此套接字的連接,返回Socket套接字。publicintgetLocalPort()返回此套接字在其上偵聽的端口publicvoidclose()關(guān)閉ServerSocketSocket類、ServerSocket類publicclassclient_tcp{publicstaticvoidmain(String[]args)throwsUnknownHostException,IOException{ //創(chuàng)建客戶端Socket對象(發(fā)送請求) Socketsocket=newSocket("",8888); //獲取用于數(shù)據(jù)傳輸?shù)妮敵隽?OutputStreamos=socket.getOutputStream(); //將數(shù)據(jù)寫出 os.write("老師您好,我是學(xué)生1".getBytes());
//客戶端讀取服務(wù)端回寫的數(shù)據(jù) InputStreamis=socket.getInputStream();
byte[]bys=newbyte[1024]; intlen=is.read(); Strings=newString(bys,0,len); System.out.println("客戶端接收到的收據(jù):"+s); socket.close(); }}Socket類、ServerSocket類publicclassServer_tcp{ publicstaticvoidmain(String[]args)throwsIOException{ //創(chuàng)建客戶端Socket對象(發(fā)送請求) ServerSocketserver=newServerSocket(8888); System.out.println("服務(wù)器已啟動(dòng)!"); Socketsocket=server.accept(); System.out.println("接收到請求!"); //獲取用于傳輸數(shù)據(jù)的流對象 InputStreamis=socket.getInputStream(); byte[]bys=newbyte[1024]; intlen=is.read(); Strings=newString(bys,0,len); System.out.println("服務(wù)端接收到的數(shù)據(jù):"+s); //服務(wù)端寫出數(shù)據(jù) OutputStreamos=socket.getOutputStream(); //將數(shù)據(jù)寫出 os.write("同學(xué)你好,消息已收到".getBytes()); socket.close(); }}多客戶端訪問處理
前面例子中的簡單服務(wù)器存在一個(gè)問題:同一時(shí)刻只能有一個(gè)客戶端連接到我們的服務(wù)器上。通常,服務(wù)器總是不間斷的運(yùn)行在計(jì)算機(jī)上,我們希望有多個(gè)客戶端能夠同時(shí)使用服務(wù)器,拒絕多客戶端連接將使得一個(gè)用戶因長時(shí)間連接而獨(dú)占服務(wù)。其實(shí),我們可以運(yùn)用線程把這個(gè)問題解決好。
每當(dāng)程序建立一個(gè)新的套接字連接,也就是說當(dāng)accept()方法被成功調(diào)用的時(shí)候,將創(chuàng)建一個(gè)新的線程來處理服務(wù)器和該客戶端的連接。主程序?qū)⒘⒓捶祷夭⒌却乱粋€(gè)連接。為了實(shí)現(xiàn)這個(gè)機(jī)制,服務(wù)器應(yīng)該具有類似以下代碼的循環(huán)操作。多客戶端訪問處理
每當(dāng)程序建立一個(gè)新的套接字連接,也就是說當(dāng)accept()方法被成功調(diào)用的時(shí)候,將創(chuàng)建一個(gè)新的線程來處理服務(wù)器和該客戶端的連接。主程序?qū)⒘⒓捶祷夭⒌却乱粋€(gè)連接。為了實(shí)現(xiàn)這個(gè)機(jī)制,服務(wù)器應(yīng)該具有類似以下代碼的循環(huán)操作。while(true){ Sockets=server.accept(); Runnabler=newThreadServerHandler(s); newThread(r).start();}多客戶端訪問處理ThreadServerHandler類實(shí)現(xiàn)了Runnable接口,而且它的run()方法中包含了與客戶端通信的代碼。classThreadServerHandlerimplementsRunnable{ publicvoidrun(){ try{ InputStreaminStream=s.getInputStream(); OutputStreamoutStream=s.getOutputStream(); //處理輸出與輸出 s.close(); }catch(IOExceptione){ //處理異常 }}}由于每一個(gè)連接都會(huì)啟
動(dòng)一個(gè)新的線程,因而多個(gè)客戶端就可以同時(shí)連接到服
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度集合大全人員管理篇十篇
- 單位管理制度集粹選集人事管理篇十篇
- 單位管理制度匯編大全人員管理十篇
- 《語文作業(yè)要求》課件
- 單位管理制度分享合集職工管理十篇
- 單位管理制度分享大合集職工管理
- 單位管理制度范文大合集職員管理十篇
- 單位管理制度范例匯編員工管理十篇
- 單位管理制度呈現(xiàn)匯編【人力資源管理】十篇
- 單位管理制度呈現(xiàn)大全員工管理十篇
- 礦大畢業(yè)設(shè)計(jì)-固定式帶式輸送機(jī)設(shè)計(jì)
- 《膽囊結(jié)石的護(hù)理》PPT
- 安徽云帆藥業(yè)有限公司原料藥生產(chǎn)項(xiàng)目環(huán)境影響報(bào)告
- 藥品質(zhì)量受權(quán)人管理規(guī)程
- 校本課程之《紅樓夢詩詞曲賞析》教案
- 熱動(dòng)復(fù)習(xí)題材料熱力學(xué)與動(dòng)力學(xué)
- 馬工程-公共財(cái)政概論-課程教案
- GB/T 38058-2019民用多旋翼無人機(jī)系統(tǒng)試驗(yàn)方法
- GB/T 30902-2014無機(jī)化工產(chǎn)品雜質(zhì)元素的測定電感耦合等離子體發(fā)射光譜法(ICP-OES)
- GB/T 22638.2-2016鋁箔試驗(yàn)方法第2部分:針孔的檢測
- GB/T 13275-1991一般用途離心通風(fēng)機(jī)技術(shù)條件
評論
0/150
提交評論