Java程序設計項目式教程 課件 11-1 學生信息文件的上傳_第1頁
Java程序設計項目式教程 課件 11-1 學生信息文件的上傳_第2頁
Java程序設計項目式教程 課件 11-1 學生信息文件的上傳_第3頁
Java程序設計項目式教程 課件 11-1 學生信息文件的上傳_第4頁
Java程序設計項目式教程 課件 11-1 學生信息文件的上傳_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

§11-1學生信息文件的上傳Java面向對象程序設計教學目標任務分析

學生基本信息即可以存儲在數(shù)據(jù)庫中,也可以存儲在文件中,還可以存儲在網(wǎng)絡服務器中。本任務就是通過Java網(wǎng)絡編程,將存儲學生信息的文件上傳至網(wǎng)絡服務器。

教學內容1網(wǎng)絡基礎Socket類2多客戶端訪問處理43ServerSocket類網(wǎng)絡基礎

TCP/IP是TransmissionControlProtocol/InternetProtocol(傳輸控制協(xié)議/網(wǎng)際互聯(lián)協(xié)議)的縮寫,代表TCP協(xié)議和IP協(xié)議。TCP/IP是Internet上所有網(wǎng)絡和主機之間進行交流所使用的共同“語言”,是Internet上使用的一組完整的標準網(wǎng)絡連接協(xié)議。通常所說的TCP/IP協(xié)議實際上包含了大量的協(xié)議和應用,是且由多個獨立定義的協(xié)議組合在一起的一個協(xié)議簇。7OSI應用6表示5會話4傳輸3網(wǎng)絡2數(shù)據(jù)鏈路1物理TCP/IP應用

傳輸互聯(lián)網(wǎng)主機至網(wǎng)絡在模型中不存在圖11-1TCP/IP參考模型網(wǎng)絡基礎

應用層:在TCP/IP模型中,應用程序接口是最高層,它與OSI模型中的高3層的任務相同,用于提供網(wǎng)絡服務,如文件傳輸(FTP)、遠程登陸(TELNET)、域名服務(DNS)和簡單網(wǎng)絡管理(SNMP)等。

傳輸層:TCP/IP的傳輸層也被稱為主機至主機層,與OSI的傳輸層類似,主要負責主機到主機之間的端到端通信。該層使用了兩種端到端的協(xié)議來支持數(shù)據(jù)的傳送,即TCP協(xié)議和UDP協(xié)議。

互聯(lián)網(wǎng)層:它是整個體系結構的關鍵部分,其主要功能是處理來自傳輸層的分組,將分組形成數(shù)據(jù)包(IP數(shù)據(jù)包),并為該數(shù)據(jù)包進行路徑選擇,最終將它們從源主機發(fā)送到目的主機。該層最常用的協(xié)議是IP協(xié)議,其它一些協(xié)議用來協(xié)助IP的操作。

主機至網(wǎng)絡層:TCP/IP模型的最低層,也稱網(wǎng)絡訪問層,包括能使用TCP/IP與物理網(wǎng)絡進行通信的協(xié)議,對應著OSI的物理層和數(shù)據(jù)鏈路層。TCP/IP標準在該層沒有定義具體的協(xié)議,只是指出主機必須使用某種協(xié)議與網(wǎng)絡連接,以便能在其上傳遞IP分組。這極大的提高了靈活性,使得TCP/IP協(xié)議可以運行在任何網(wǎng)絡之上。網(wǎng)絡基礎

標準的URL由3部分組成:協(xié)議類型、主機名和路徑名。如圖11-3所示為山東電子職業(yè)技術學院的WWW服務器的URL。

其中,“http”指出要使用HTTP協(xié)議;“”指出要訪問的服務器的主機名;“Index.html”指出要訪問的主頁的路徑及文件名。圖11-3標準的URL組成網(wǎng)絡基礎URL的構成包括:信息服務方式://信息資源的地址/文件路徑信息服務方式目前,WWW系統(tǒng)中編入URL的最普遍的服務連接方式有以下4種:lHTTP:使用HTTP協(xié)議,提供超文本信息服務的WWW信息資源空間。lFTP:使用FTP協(xié)議,提供文件傳送服務的FTP資源空間。lFILE:使用本地HTTP協(xié)議,提供超級文件信息服務的WWW信息資源空間。lTELNET:使用TELNET協(xié)議,提供遠程登陸信息服務的TELNET信息資源空間。Socket類JDK中提供了ServerSocket類,表示服務器端,Socket類表示客戶端。通信時,首先要創(chuàng)建代表服務器端的ServerSocket對象,該對象相當于開啟一個服務,并等待客戶端的連接,然后創(chuàng)建代表客戶端的Socket對象,并向服務器段端發(fā)出連接請求,服務器端響應請求,兩者建立連接后可以通信。socketserversocket客戶端向服務器端發(fā)送請求服務器端響應客戶端請求Socket類Socket常用構造方法方法說明publicSocket(Stringhost,intport)構造方法,遠程服務器的地址和端口號publicSocket(InetAddresshost,intport)構造方法,遠程服務器的地址和端口號publicInputStreamgetInputStream()獲取輸入流publicOutputStreamgetOutputStream()獲取輸出流publicvoidclose()關閉socketServerSocket類ServerSocket常用構造方法方法說明publicServerSocket(intport)構造方法,創(chuàng)建綁定到特定端口的服務器套接字publicSocketaccept()偵聽并接受到此套接字的連接,返回Socket套接字。publicintgetLocalPort()返回此套接字在其上偵聽的端口publicvoidclose()關閉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("老師您好,我是學生1".getBytes());

//客戶端讀取服務端回寫的數(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("服務器已啟動!"); 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("服務端接收到的數(shù)據(jù):"+s); //服務端寫出數(shù)據(jù) OutputStreamos=socket.getOutputStream(); //將數(shù)據(jù)寫出 os.write("同學你好,消息已收到".getBytes()); socket.close(); }}多客戶端訪問處理

前面例子中的簡單服務器存在一個問題:同一時刻只能有一個客戶端連接到我們的服務器上。通常,服務器總是不間斷的運行在計算機上,我們希望有多個客戶端能夠同時使用服務器,拒絕多客戶端連接將使得一個用戶因長時間連接而獨占服務。其實,我們可以運用線程把這個問題解決好。

每當程序建立一個新的套接字連接,也就是說當accept()方法被成功調用的時候,將創(chuàng)建一個新的線程來處理服務器和該客戶端的連接。主程序將立即返回并等待下一個連接。為了實現(xiàn)這個機制,服務器應該具有類似以下代碼的循環(huán)操作。多客戶端訪問處理

每當程序建立一個新的套接字連接,也就是說當accept()方法被成功調用的時候,將創(chuàng)建一個新的線程來處理服務器和該客戶端的連接。主程序將立即返回并等待下一個連接。為了實現(xiàn)這個機制,服務器應該具有類似以下代碼的循環(huán)操作。while(true){ Sockets=server.accept(); Runnabler=newThreadServerHandler(s); newThread(r).start();}多客戶端訪問處理ThreadServerHandler類實現(xiàn)了Runnable接口,而且它的run()方法中包含了與客戶端通信的代碼。classThreadServerHandlerimplementsRunnable{ publicvoidrun(){ try{ InputStreaminStream=s.getInputStream(); OutputStreamoutStream=s.getOutputStream(); //處理輸出與輸出 s.close(); }catch(IOExceptione){ //處理異常 }}}由于每一個連接都會啟

動一個新的線程,因而多個客戶端就可以同時連接到服

溫馨提示

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

評論

0/150

提交評論