




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
JAVA語言程序設計9.1網絡連接的3種方式9.2網絡編程案例本章小結第九章目錄教學目標:在網絡為核心的信息時代,計算機網絡已經成為人們生活中必不可少的部分。JAVA因為具有與平臺無關性、安全性好、網絡類庫豐富等特性,在網絡編程上具有無法比擬的優(yōu)勢。本章將介紹網絡模型和不同層次上JAVA網絡連接的方式,結合實例介紹各種連接方法的使用。網絡是一把雙刃劍,使用網絡時,要自覺按照社會主義道德的原則和要求,規(guī)范自己的行為;要依法律己,遵守“網絡文明公約”。教學重點:掌握URL連接方式。掌握Datagram連接方式。掌握Socket連接方式。第九章網絡接口層網際層傳輸層應用層網絡接口層網際層傳輸層應用層網絡圖12-1TCP/IP體系結構通訊示意圖HTTP、……SMTP、FTPTCP或UDPIP1.目前因特網使用的是TCP/IP體系結構9.1網絡基礎
計算機系統(tǒng)中各個部件之間以何種規(guī)則進行通信,就是網絡模型。網絡模型一般是指OSI七層參考模型和TCP/IP四層參考模型。2.
TCP/IP的協(xié)議族提供三個服務層次:①應用層向應用進程提供應用服務,包含HTTP、SMTP、FTP、DNS、TELNET等多種應用層協(xié)議。②傳輸層向應用層提供傳輸服務,包含TCP和UDP協(xié)議。③網際層向傳輸層提供無連接分組交付服務,包含IP協(xié)議。Java提供了網絡方面的類定義在包中。Java的網絡連接分三種方式:①URL連接方式是三大功能中最上層的方法,它面向http、FTP等服務,很容易確定網絡位置,可以直接送出或讀入網絡上的數(shù)據(jù)。②Socket連接方式是傳統(tǒng)網絡程序最常用的方式,它面向有連接的TCP服務。一般情況下客戶機服務器模式的軟件采用此方法。Socket連接方式是目前非常流行的連接方式,將在9.2節(jié)中詳細講解。③Datagram連接方式是更低級的網絡傳輸方式,它面向無連接的UDP服務,將數(shù)據(jù)目的地地址封裝到數(shù)據(jù)包中,直接向網絡發(fā)送數(shù)據(jù)包。系統(tǒng)不能保證一定會將數(shù)據(jù)送到目的地。9.1網絡連接的三種方式1.概念URL
是統(tǒng)一資源定位器(UniformResourceLocator)的簡稱,表示網絡某一資源的地址。URL包括兩部分:協(xié)議名稱和資源名稱。例如是一個URL。其中http代表協(xié)議,//是資源的名稱。URL連接方式包含兩個常用類:URL類和URLConnection
類。
9.1.1URL連接方式JAVA中,URL類代表一個統(tǒng)一資源定位符,它指向互聯(lián)網上的某一資源。URL類有六個構造方法。其中最簡單的構造方法格式如下:URL(Stringurl);根據(jù)String參數(shù)創(chuàng)建URL對象。(1)URL類URL類的常用方法importjava.io.*;import.URL;//引入相關的包publicclassExample12_1{ publicstaticvoidmain(String[]args)throwsIOException { //聲明拋出異常 URLurl=newURL("");//連接到搜狐主頁 System.out.println("Authority="+url.getAuthority());//獲取授權 System.out.println("Defaultport="+url.getDefaultPort());//默認端口 System.out.println("Host="+url.getHost());//獲取主機名 System.out.println("Port="+url.getPort());//獲取url端口 System.out.println("Protocol="+url.getProtocol());//獲取協(xié)議 System.out.println("Query="+url.getQuery());//獲取查詢部分 System.out.println("Ref="+url.getRef());//獲取url的引用 System.out.println("UserInfo="+url.getUserInfo());//獲取url用戶信息 }}【例9-1】建立一個URL對象,調用URL的方法檢索該對象的各種屬性。該類代表應用程序和URL之間的通信鏈接。此類用于讀取和寫入URL引用的資源。構造方法如下:
publicURLConnection(URLurl);實際上,常用url.openConnection()方法得到一個URLConnection類的對象。(2)URLConnection類URLConnection類的常用方法importjava.io.*;import.*;//引入包publicclassExample12_2{ publicstaticvoidmain(Stringargs[]){ Stringreadline;InputStreaminput=null;DataInputStreamdatainput=null;try{URLurl=newURL("");//獲取一個URL對象;【例9-2】通過URL定位讀取網易首頁文件內容,并直接打印出來。 input=url.openStream();//獲得輸入流;
datainput=newDataInputStream(input);//包裹數(shù)據(jù)流;
while((readline=datainput.readLine())!=null){//讀取文件
System.out.println(readline);//打印文件;
}}catch(Exceptionme){ System.out.println("ErrorURL");}finally{try{datainput.close();}//關閉輸入流;
catch(IOExceptione){e.printStackTrace();}}}}通過URL調用openConnection方法創(chuàng)建連接對象。設置參數(shù)和一般請求屬性。使用connect()方法建立到遠程對象的實際連接。遠程對象變?yōu)榭捎?,遠程對象的頭字段和內容變?yōu)榭稍L問。3URLConnection對象連接模型importjava.io.IOException; import.URL; import.URLConnection;//引入各種包
publicclassExample12_3{ publicstaticvoidmain(String[]args){Stringtype,encoding;longlength,date;
try{
//創(chuàng)建連接對象。
URLurl=newURL("");
【例9-3】使用URLConnection的對象定位到百度網站后讀取資源的頭信息。URLConnectionconnection=url.openConnection();connection.setDoInput(true);//設置參數(shù)和一般請求屬性。connection.setDoOutput(true);connection.connect();//建立到遠程對象的實際連接。
type=connection.getContentType();encoding=connection.getContentEncoding();length=connection.getContentLength();date=connection.getDate();//訪問遠程對象的頭字段和內容System.out.println(“content-type值=”+type);System.out.println(“content-encoding值=”+encoding);System.out.println(“content-length值=”+length);System.out.println("date值="+date);//打印各種值}catch(IOExceptione){e.printStackTrace();}} }//捕獲異常1.概念Datagram連接方式是一種較低級的網絡傳輸方式,面向無連接的UDP服務。UDP提供面向事務的簡單、不可靠信息傳輸服務,適用于需要通信的信息量比較小,而且通信環(huán)境可靠性比較好的場合。每個在數(shù)據(jù)報套接字上發(fā)送或接收的包都是單獨編址和路由的。從一臺機器發(fā)送到另一臺機器的多個包可能選擇不同的路由,也可能按不同的順序到達。這種方式不能保證數(shù)據(jù)安全到達目的地。Datagram連接方式的工作原理:發(fā)送數(shù)據(jù)時,先打包,將數(shù)據(jù)要發(fā)送的目的地的地址和端口號打包到每個數(shù)據(jù)包中,發(fā)送到網絡;接收數(shù)據(jù)時,先拆包,得到對方的IP地址和端口號。為了完成數(shù)據(jù)報通信,JAVA提供了兩個常用的類:DatagramSocket
類和DatagramPacket類。9.1.2Datagram連接方式DatagramSocket是用來發(fā)送和接收數(shù)據(jù)報包的套接字。常用的構造方法有以下兩個:1.DatagramSocket():綁定到本地主機上任何可用的端口。此構造方法通常使用在客戶機上。2.DatagramSocket(intport):創(chuàng)建數(shù)據(jù)報套接字并將其綁定到本地主機上的指定端口。(1)DatagramSocket類DatagramSocket類的常用方法DatagramPacket類表示數(shù)據(jù)報包,用于將要發(fā)送的信息打包成數(shù)據(jù)報和接收來自網絡的數(shù)據(jù)報,實現(xiàn)無連接包投遞服務。常用構造方法有兩種:1.DatagramPacket(byte[]buf,intlength):用來接收長度為length的數(shù)據(jù)報。2.DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport):將長度為length的包發(fā)送到指定主機上的指定端口號。(2)DatagramPacket類DatagramPacket類的常用方法2.Datagram連接方式通信模型服務器------------------------------------------DatagramSocket(端口號)------------------------------------------DatagramSocket.recieve(DatagramPacket)DatagramSocket.send(DatagramPacket)客戶端---------------------------------------DatagramSocket()DatagramPacket(地址,端口)---------------------------------------DatagramSocket.send(DatagramPacket)DatagramSocket.recieve(DatagramPacket)使用Datagram連接方式也需要考慮服務器編程和客戶端編程。(1)服務器編程的步驟。創(chuàng)建數(shù)據(jù)報文Socket對象。分配用于收發(fā)數(shù)據(jù)的緩沖區(qū)。創(chuàng)建一個DatagramPacket用來接收Socket數(shù)據(jù)。服務器等待客戶的請求包到來。如果服務器接收到來自客戶端的數(shù)據(jù)報報,從它接收到的數(shù)據(jù)報文中讀取客戶端的地址和端口。將要發(fā)送的數(shù)據(jù)打包成報文包,從Socket上發(fā)送信息。如果停止服務,則關閉Socket。2.Datagram連接方式通信模型建立Socket。分配用于收發(fā)數(shù)據(jù)的緩沖區(qū)。向服務器發(fā)出請求報文,將數(shù)據(jù)報發(fā)送到指定主機的對應端口號。一個客戶機必須事先知道服務器的地址和端口,這個數(shù)據(jù)報包自身攜帶客戶端的信息。客戶機等待應答。接收來自服務器的數(shù)據(jù)包。關閉Socket。(2)客戶端編程的步驟【例9-5】建立一個網絡通訊程序,客戶機向服務器發(fā)出三次呼叫,服務器應答收到?!纠?-6】模仿QQ登錄,建立一個遠程登錄過程。使用圖形界面,雙方打開應用程序后,可以自由通話。服務器指定端口號521提供服務。網絡給人們提供了一個獲取信息的環(huán)境,這個環(huán)境推動了社會的發(fā)展,給人們的學習和生活帶來了巨大的便利。但是,這個環(huán)境中有大量的垃圾信息、不健康信息,甚至是危害社會和諧、國家安全的反動信息。正確利用網絡,有效利用網絡上的規(guī)范信息,明辨是非,抵御誘惑,是計算機從業(yè)人員所應具備的重要素質。課后思考:明辨是非,抵御誘惑Socket連接方式是JAVA提供的面向連接服務的一種網絡連接方式。根據(jù)TCP的規(guī)則,在傳輸數(shù)據(jù)之前必須先建立連接,數(shù)據(jù)傳輸結束后,要釋放連接。Socket連接方式在服務器和客戶端都需要創(chuàng)建實例,雙方經過確認連接后才能進行通信。9.1.3Socket連接方式Socket套接字是指進程間通訊連接的端點。Socket模型建立服務器和客戶端的連接,使雙方通過建立好的連接通道進行通信。1.概念客戶機服務器Socket(IP+端口)端口號該端口對應的服務Socket連接方式Socket連接方式實際包含兩個類:ServerSocket類和Spcket類。ServerSocket類是服務器套接字,只應用于服務器上。構造方法如下:
publicServerSocket(intport);創(chuàng)建綁定到特定端口port的服務器套接字。(1)ServerSocket類ServerSocket類的常用方法Socket類是客戶端套接字,既應用于客戶機也應用于服務器上??蛻魴C上,Socket對象由構造方法創(chuàng)建;服務器上,Socket對象由ServerSocket類調用accept()方法進行創(chuàng)建。(2)Socket類常用構造方法:publicSocket(InetAddressaddress,intport)創(chuàng)建一個流套接字并將其連接到指定IP的指定端口。publicSocket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort)創(chuàng)建一個套接字并將其連接到遠程地址上的端口,通過調用bind()函數(shù)來綁定提供的本地地址及端口。(2)Socket類(2)Socket類的常用方法使用Socket連接方式需要考慮服務器編程和客戶端編程。2.Socket編程通信模型在服務器端通過創(chuàng)建一個ServerSocket實例,指定一個用來等待的連接的端口號,等待連接。如果監(jiān)聽到來自客戶機的連接請求,服務器通過ServerSocket的accept()方法創(chuàng)建Socket實例。創(chuàng)建Socket的輸入/輸出流,與客戶機進行通信。通信結束后關閉流,關閉Socket。(1)服務器端編程的步驟在客戶端創(chuàng)建一個socket實例,規(guī)定連接服務器的地址和端口號,向服務器發(fā)送連接請求。創(chuàng)建Socket的輸入輸出流,與服務器進行通信。通信結束后關閉流,關閉Socket。(2)客戶端編程的步驟【例9-7】建立一個網絡通訊程序,客戶機向服務器發(fā)出呼叫,服務器應答收到?!纠?-8】模仿Telnet登錄,建立一個遠程登錄過程。使用DOS環(huán)境,當客戶端輸入命令Telnet,向服務器發(fā)送連接請求,服務器要求輸入密碼,客戶端輸入密碼后,如果正確,提示登錄成功,否則提示密碼錯誤。服務器指定端口號1234提供服務。以華為為代表的中國科技公司已經在世界上嶄露頭角,在某些領域甚至領先世界,在接下來的一段時間,中美兩國圍繞高科技領域的爭奪還會繼續(xù)。發(fā)展5G不僅是通信產業(yè)的盛事,甚至在國家層面都受到了前所未有的重視,很大程度上是因為未來的萬物互聯(lián)構想需要5G產業(yè)作為基礎設施。2G跟隨、3G突破、4G同步、5G引領,我國有望在5G時代領先于其他國家。科技的發(fā)展和進步只能依靠自己,埋頭苦干,注重科技創(chuàng)新,這才是一切進步的源泉。課后思考:中美5G之爭,科技進步要自力更生在第八章中,網絡聊天工具已經可以將聊天信息存入到本地文件中,在這里通過登錄界面連接服務器,建立一個遠程登錄過程。使用Socket進行網絡編程,完成多個客戶端通過遠程服務器進行連接、交互的過程,本節(jié)先只實現(xiàn)多個客戶與服務器進行連接。9.2網絡編程案例1.設計思路①在服務器上指定服務端口,創(chuàng)建ServerSocket服務,等待客戶端連接。②客戶端接收命令,判斷是Telnet命令后,與服務器連接。③客戶端與服務器端進行數(shù)據(jù)流交互,用戶發(fā)送用戶名和密碼,服務器響應是否正確。④如果正確程序進入聊天界面。⑤會話結束,關閉Socket服務。9.2網絡編程案例2.遇到問題①如果在一臺機器上怎樣模仿交互過程?②怎樣實現(xiàn)服務器不停的監(jiān)聽,做到有連接請求,立刻響應?③如何實現(xiàn)將登錄的命令發(fā)送到服務器上?【解決問題1】正??蛻舳撕头掌鞫藘膳_機器的IP地址不同,在客戶端登錄時,由Socket指定IP地址即可。如果是在同一臺機器上,可以在客戶端指定登錄的IP是。該地址作為本地軟件換回測試主機時使用,這樣一臺機器就可以作為客戶端,同時自身作為服務器使用。使用時需要先開啟服務器程序,再開啟客戶端程序。9.2網絡編程案例【解決問題2】服務器從開始工作,就要一直偵聽,即使客戶端連接后斷開后,服務也不能停止。這樣在服務器程序上需要無條件的重復工作,直到服務程序關閉位置。因此,采用一個條件永遠為真的死循環(huán),不斷的重復偵聽。while(true){ Sockets=ss.accept();//定義及初始化服務器監(jiān)聽客戶端的端口。。。。。。}【解決問題3】在客戶端點擊登錄按鈕時,通過Socket連接服務器。通過Socket的輸出流,將用戶名和密碼發(fā)送到服務器上,再通過socket的輸入流得到服務器端返回的結果。 s=newSocket("",8000); os=s.getOutputStream(); OutputStreamWriterow=newOutputStreamWriter(os); PrintWriterpw=newPrintWriter(ow,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 助力班級學習的多元評價方式計劃
- 2025年光刻膠配套試劑項目發(fā)展計劃
- 2025年工藝氣體壓縮機合作協(xié)議書
- 學校如何搭建高效穩(wěn)定的在線教學平臺
- 中國文化與企業(yè)國際化的融合實踐
- 基于跨學科整合的小學數(shù)學教學研究
- 銷售心理學在營銷中的應用
- 人力資源規(guī)劃與組織發(fā)展研究
- 山東省濰坊市2024年中考數(shù)學試卷含真題解析
- 國際學生運動員的成長與發(fā)展
- 《電工電子技術基礎》高職全套教學課件
- 采血健康宣教
- 高中英語 選必二 Unit3 Times change 第4課時-developing ideas- Emojis a new language 課件
- 機動車檢測站突發(fā)環(huán)境污染事件應急預案
- 關于赴XXX醫(yī)院參觀學習聯(lián)系函
- 【匯總】高二政治選擇性必修三(統(tǒng)編版) 重點知識點匯總
- T∕CIS 71001-2021 化工安全儀表系統(tǒng)安全要求規(guī)格書編制導則
- 體醫(yī)融合與健康中國課件
- 福利院裝修改造工程施工組織設計(225頁)
- 基因表達的調控
- 華師大版九年級下冊數(shù)學全冊教案
評論
0/150
提交評論