版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
項目十一Java網(wǎng)編程【項目描述】
網(wǎng)絡(luò)編程技術(shù)是當(dāng)前一種主流的編程技術(shù),隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)編程技術(shù)在實際開發(fā)中大量地應(yīng)用到。本項目介紹了網(wǎng)絡(luò)編程的基礎(chǔ)知識,演示了TCP和UDP兩種網(wǎng)絡(luò)通訊方式在Java語言中的實現(xiàn)。
【任務(wù)分解】本項目可分解為以下四個任務(wù):1、網(wǎng)絡(luò)編程概述。2、TCP網(wǎng)絡(luò)編程。3、UDP網(wǎng)絡(luò)編程。4、多線程與網(wǎng)絡(luò)編程的綜合應(yīng)用。任務(wù)一
網(wǎng)絡(luò)編程概述
【任務(wù)描述】
任務(wù)11-1:InetAddress類的應(yīng)用:分別使用域名和IP創(chuàng)建InetAddress類的對象,并調(diào)用類中相關(guān)的方法獲取對象的域名和IP。
【必備知識】1.計算機網(wǎng)絡(luò)的幾個術(shù)語(1)IP地址:為了能夠方便的識別網(wǎng)絡(luò)上的每個設(shè)備,網(wǎng)絡(luò)中的每個設(shè)備都會有一個唯一的數(shù)字標(biāo)識,這個數(shù)字標(biāo)識就是IP地址。(2)域名:由于IP地址不容易記憶,為了方便記憶,使用域名(DomainName),例如。一個IP地址可以對應(yīng)多個域名,一個域名只能對應(yīng)一個IP地址。(3)端口:在同一個計算機中每個程序?qū)?yīng)唯一的端口(port),一個計算機可以同時運行多個程序。2.網(wǎng)絡(luò)編程概述(1)網(wǎng)絡(luò)編程概念:網(wǎng)絡(luò)編程就是兩個或多個程序之間的數(shù)據(jù)交換。Java中有專門的API實現(xiàn)發(fā)送和接受數(shù)據(jù)功能,我們只需調(diào)用即可。(2)客戶端和服務(wù)器:網(wǎng)絡(luò)通訊基于“請求--響應(yīng)”模型。在網(wǎng)絡(luò)通訊中,主動發(fā)起通訊的程序被稱作客戶端程序,簡稱客戶端(Client),而在通訊中等待連接的程序被稱作服務(wù)器端程序,簡稱服務(wù)器(Server)。常見的網(wǎng)絡(luò)編程結(jié)構(gòu)有C/S和B/S。其中C/S結(jié)構(gòu)是“客戶端/服務(wù)器(Client/Server)”結(jié)構(gòu)。而B/S是“瀏覽器/服務(wù)器(Browser/Server)”,B/S結(jié)構(gòu)不使用專用的客戶端,而使用通用的客戶端(如瀏覽器)。3.網(wǎng)絡(luò)通訊方式在現(xiàn)有的網(wǎng)絡(luò)中,網(wǎng)絡(luò)通訊方式主要有兩種:TCP(傳輸控制協(xié)議)方式和UDP(用戶數(shù)據(jù)報協(xié)議)方式。4.包網(wǎng)絡(luò)編程有關(guān)的基本API位于包中,該包中包含了基本的網(wǎng)絡(luò)編程實現(xiàn),該包中既包含基礎(chǔ)的網(wǎng)絡(luò)編程類,也包含封裝后的專門處理WEB相關(guān)業(yè)務(wù)的處理類。解題思路】 任務(wù)11-1:1.聲明InetAddress對象inet1、inet2、inet3。使用域名創(chuàng)建對象,并輸出該對象。2.使用IP創(chuàng)建對象,并輸出該對象。3.調(diào)用InetAddress類的getLocalHost()方法獲得本機地址對象,并輸出。4.利用getHostName(),獲得對象中存儲的域名。5.利用getHostAddress(),獲得對象中存儲的IP?!救蝿?wù)透析】任務(wù)11-1源代碼:參見InetAddressDemo.java【課堂提問】★在同一個計算機中,同一個端口可以分配給兩個不同的應(yīng)用程序嗎?★IP地址和域名的區(qū)別與聯(lián)系?【現(xiàn)場演練】把任務(wù)11-1代碼中的域名改為谷歌、新浪或其他的網(wǎng)址,看看得到怎樣的運行結(jié)果。12.2 URL
在WWW上,每一信息資源都有統(tǒng)一的且唯一的地址,該地址就叫URL(UniformResourceLocator),它是WWW的統(tǒng)一資源定位標(biāo)志。URL由4部分組成:資源類型、存放資源的主機域名、資源文件名和端口。例如,http://:80/top.html,其中http表示HTTP協(xié)議,是清華大學(xué)的主機域名,top.html為資源文件名,80為HTTP協(xié)議的缺省端口號。協(xié)議名和端口號之間是有一定的聯(lián)系的,如HTTP協(xié)議的缺省端口號是80,F(xiàn)TP協(xié)議的缺省端口號是21等。所以,一般情況下URL地址可以只包含有傳輸協(xié)議、主機名和文件名。任務(wù)二TCP網(wǎng)絡(luò)編程【任務(wù)描述】任務(wù)11-2:實現(xiàn)TCP方式網(wǎng)絡(luò)編程,實現(xiàn)的功能是客戶端向服務(wù)器端發(fā)送問候信息,并將服務(wù)器端的反饋顯示到控制臺。要求分別演示在客戶端和服務(wù)器端的實現(xiàn)步驟?!颈貍渲R】1.TCP網(wǎng)絡(luò)編程TCP方式是可靠性、雙向性、持續(xù)性、點對點傳輸,在通訊的過程中保持連接。Java中使用Socket完成TCP程序的開發(fā),Socket是指“套接字”,指在兩臺計算機上運行的兩個程序之間的一個雙向通信的連接點,每一端稱為一個Socket。服務(wù)器端使用ServerSocket,客戶端使用Socket,每一個Socket代表一個客戶端。Socket所要完成的通信就是基于連接的通信,建立連接所需的程序分別運行在客戶端和服務(wù)器端。Socket類與ServerSocket類構(gòu)造方法功能說明ServerSocket(intport)在指定的端口創(chuàng)建一個ServerSocket對象
ServerSocket(intport,intcount)在指定的端口創(chuàng)建一個ServerSocket對象并說明服務(wù)器所能支持的最大鏈接數(shù)
Socket(InetAddressaddress,intport)使用指定地址和端口創(chuàng)建一個Socket對象
Socket(InetAddressaddress,intport,booleanstream)使用指定地址和端口創(chuàng)建一個Socket對象(若布爾數(shù)值為true,則是采用流式通信方式)Socket(Stringhost,intport)使用指定主機和端口創(chuàng)建一個Socket對象Socket(Stringhost,intport,booleanstream)使用指定主機和端口創(chuàng)建一個Socket對象(若布爾數(shù)值為true,則是采用流式通信方式)2.TCP客戶端編程步驟客戶端的網(wǎng)絡(luò)編程步驟一般由3個步驟組成:(1)建立網(wǎng)絡(luò)連接。(2)數(shù)據(jù)交換。(3)關(guān)閉網(wǎng)絡(luò)連接。3.TCP服務(wù)器端編程步驟服務(wù)器端的網(wǎng)絡(luò)編程步驟一般由4個步驟組成:(1)監(jiān)聽端口:創(chuàng)建一個ServerSocket對象就是創(chuàng)建了一個監(jiān)聽服務(wù),例如,要創(chuàng)建一個指定端口的ServerSocket對象:ServerSocketss=newServerSocket(9999);(2)獲得連接:當(dāng)客戶端連接到服務(wù)器端時,服務(wù)器端就獲得一個連接,這個連接包含客戶端的信息,如客戶端IP地址等。(3)數(shù)據(jù)交換:服務(wù)器端的數(shù)據(jù)交換步驟是首先接收客戶端發(fā)送過來的數(shù)據(jù),然后進行邏輯處理,再把處理以后的結(jié)果數(shù)據(jù)發(fā)送給客戶端。(4)關(guān)閉連接:當(dāng)服務(wù)器程序關(guān)閉時,需要關(guān)閉服務(wù)器端,服務(wù)器監(jiān)聽的端口以及占用的內(nèi)存可以釋放出來?!窘忸}思路】
任務(wù)11-2:客戶端實現(xiàn)步驟為:1.首先要建立連接。2.進行網(wǎng)絡(luò)數(shù)據(jù)交換。3.數(shù)據(jù)交換完成,關(guān)閉網(wǎng)絡(luò)連接,釋放網(wǎng)絡(luò)連接所占用的各種資源。用close()方法關(guān)閉網(wǎng)絡(luò)連接。服務(wù)器端實現(xiàn)的步驟為:
1.監(jiān)聽端口。
2.獲得連接。實現(xiàn)獲得連接的代碼是:
Socketsocket=ss.accept();accept()表示接收客戶端連接,該方法是一個阻塞方法,也就是當(dāng)沒有連接到達時,程序?qū)⒆枞?,直到連接到達時才執(zhí)行該行代碼。
3.關(guān)閉服務(wù)器端連接。完成服務(wù)器端通信后,要關(guān)閉連接,用close()方法。獲得連接后,后續(xù)的編程步驟和客戶端類似?!救蝿?wù)透析】
任務(wù)11-2:1.客戶端代碼為:SocketClientDemo11_2.javapackagetask11_2;importjava.io.*;import.*;publicclassSocketClientDemo11_2{ publicstaticvoidmain(String[]args){ Socketsocket=null; InputStreamis=null; OutputStreamos=null; Stringdata="你好!來自客戶端的問候";//要發(fā)送的內(nèi)容 try{ socket=newSocket("localhost",8800);//指定連接主機及端口 //發(fā)送數(shù)據(jù) os=socket.getOutputStream(); os.write(data.getBytes()); //接收數(shù)據(jù) is=socket.getInputStream(); byte[]b=newbyte[1024];
intn=is.read(b); //輸出反饋數(shù)據(jù) System.out.println("服務(wù)器反饋:"+newString(b,0,n)); }catch(Exceptione){ e.printStackTrace(); }finally{ try{ //關(guān)閉流和連接 is.close(); os.close(); socket.close(); }catch(Exceptione){ e.printStackTrace(); } } }}在該任務(wù)案例中,Socket類代表客戶端連接,在客戶端連接建立了一個連接到IP地址為localhost(本機)端口號碼為8800的TCP類型的網(wǎng)絡(luò)連接,然后獲得連接的輸出流對象,將需要發(fā)送的字符串data轉(zhuǎn)換為byte數(shù)組寫入到輸出流中,由系統(tǒng)將輸出流中的數(shù)據(jù)發(fā)送出去,如果需要強制發(fā)送,可以調(diào)用輸出流對象的flush()方法實現(xiàn)。2.服務(wù)器端代碼:SocketServerDemo11_2.javapackagetask11_2;importjava.io.*;import.*;publicclassSocketServerDemo11_2{ publicstaticvoidmain(String[]args){ ServerSocketserverSocket=null; Socketsocket=null; OutputStreamos=null; InputStreamis=null; try{ //服務(wù)器在8800端口上進行監(jiān)聽 serverSocket=newServerSocket(8800); System.out.println("服務(wù)器端已經(jīng)啟動了,等待客戶端的連接..."); //接收客戶端連接 socket=serverSocket.accept(); //獲得客戶端發(fā)送的信息
is=socket.getInputStream(); byte[]b=newbyte[1024]; intn=is.read(b); //輸出 System.out.println("客戶端發(fā)送過來的內(nèi)容是:"+newString(b,0,n)); //向客戶端發(fā)送反饋內(nèi)容 os=socket.getOutputStream(); os.write(b,0,n); }catch(Exceptione){ e.printStackTrace(); }finally{ try{ //關(guān)閉流和連接 os.close(); is.close(); socket.close(); serverSocket.close(); }catch(Exceptione){ e.printStackTrace(); } } }}
在本任務(wù)案例中,ServerSocket類代表服務(wù)器端連接,在服務(wù)器端中建立了一個監(jiān)聽當(dāng)前計算機8800號端口的服務(wù)器端Socket連接,然后獲得客戶端發(fā)送過來的連接,如果有連接到達時,讀取連接中發(fā)送過來的內(nèi)容,并將發(fā)送的內(nèi)容在控制臺進行輸出,輸出完成以后將客戶端發(fā)送的內(nèi)容再反饋給客戶端。最后關(guān)閉流和連接對象,程序結(jié)束。
圖11.2任務(wù)11-2服務(wù)器端程序的運行結(jié)果圖11.3任務(wù)11-2客戶端程序的運行結(jié)果【課堂提問】★TCP網(wǎng)絡(luò)編程方式中,主要是利用哪兩個類來實現(xiàn)的?★簡單說說在TCP網(wǎng)絡(luò)編程中,客戶端和服務(wù)器端各自的編程步驟?!粳F(xiàn)場演練】任務(wù)11-2是實現(xiàn)在同一部計算機中進行發(fā)送和接收信息的,請修改源代碼,完成在兩部計算機之間收發(fā)信息。任務(wù)三UDP網(wǎng)絡(luò)編程【任務(wù)描述】任務(wù)11-3:該任務(wù)的功能是實現(xiàn)將客戶端程序的系統(tǒng)時間發(fā)送給服務(wù)器端,服務(wù)器端接收到時間以后,向客戶端反饋字符串“HelloJava”??蛻舳顺绦虻妮敵鼋Y(jié)果為:服務(wù)器端反饋為:“HelloJava”。【必備知識】1.UDP網(wǎng)絡(luò)編程UDP通信是一種無連接的數(shù)據(jù)報通信,采用數(shù)據(jù)報通信協(xié)議UDP(UserDatagramProtocol)。按照這個協(xié)議,兩個系統(tǒng)在進行通信時,不要建立連接,優(yōu)點是它發(fā)送數(shù)據(jù)的速度很快,而缺點是數(shù)據(jù)較易丟失,例如我們使用的紅外線數(shù)據(jù)傳輸就是采用UDP的傳輸協(xié)議。DatagramSocket常用的方法:DatagramPacket常用的方法:2.UDP客戶端編程步驟UDP客戶端編程由4個步驟組成,分別是:建立連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)和關(guān)閉連接。(1)建立連接。(2)發(fā)送數(shù)據(jù)。(3)接收數(shù)據(jù)。(4)關(guān)閉連接。3.UDP服務(wù)器端編程步驟
(1)建立一個連接。(2)接收客戶端發(fā)送過來的數(shù)據(jù)。(3)對從客戶端接收到的數(shù)據(jù)進行邏輯處理,然后將處理結(jié)果發(fā)送回客戶端。(4)關(guān)閉服務(wù)器端連接?!窘忸}思路】 任務(wù)11-3:
請參照必備知識中介紹的UDP客戶端編程步驟和UDP服務(wù)器端編程步驟
實現(xiàn)?!救蝿?wù)透析】任務(wù)11-3:
1.客戶端源代碼:請參見UDPClientDemo11_3.java2.服務(wù)器端源代碼:請參見UDPServerDemo11_3.java【課堂提問】★UDP方式的編程主要由哪兩個類實現(xiàn)的?★TCP和UDP兩種網(wǎng)絡(luò)編程方式最主要的區(qū)別是什么?【現(xiàn)場演練】將任務(wù)11-3修改為在兩部計算機之間收發(fā)信息,編譯并運行程序代碼,觀察程序的輸出結(jié)果。任務(wù)四多線程與網(wǎng)絡(luò)編程的綜合應(yīng)用【任務(wù)描述】任務(wù)11-4:完成一個猜數(shù)字的控制臺小
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新疆師范大學(xué)《歷史教學(xué)設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 青少年兒童安全保護
- 新疆警察學(xué)院《銀行信貸管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年初中級攝影師資格鑒定考試題庫(含答案)
- 用電安全培訓(xùn)
- 警察講解幼兒安全
- 進口鋁錠標(biāo)準(zhǔn)合同范例
- 路燈安裝補充合同范例
- 營業(yè)廳手機銷售合同范例
- 噴泉安裝采購合同范例
- 廣東省廣州海珠區(qū)2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)試卷(含答案)
- 2024年《論教育》全文課件
- 生命安全與救援學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- (2024年)面神經(jīng)炎課件完整版
- 華電行測題庫及答案2024
- 馬工程版《中國經(jīng)濟史》各章思考題答題要點及詳解
- 大學(xué)語文莊子·秋水(課堂)課件
- 尋覓沉睡的寶船 南海一號 華光礁一號
- DB32-T 2948-2016水利工程卷揚式啟閉機檢修技術(shù)規(guī)程-(高清現(xiàn)行)
- 公司治理(馬連福 第2版) 課后答案及案例分析 第2章
- 繪本brown bear教案及反思
評論
0/150
提交評論