Java程序設(shè)計(jì)_單元5_任務(wù)6_第1頁(yè)
Java程序設(shè)計(jì)_單元5_任務(wù)6_第2頁(yè)
Java程序設(shè)計(jì)_單元5_任務(wù)6_第3頁(yè)
Java程序設(shè)計(jì)_單元5_任務(wù)6_第4頁(yè)
Java程序設(shè)計(jì)_單元5_任務(wù)6_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、任務(wù)六:無(wú)連接網(wǎng)絡(luò)聊天程序設(shè)計(jì)單元五:Java語(yǔ)言高級(jí)程序設(shè)計(jì)教學(xué)目標(biāo)知識(shí)目標(biāo)UDP 協(xié)議的概念;數(shù)據(jù)包概念;數(shù)據(jù)報(bào)套接字概念;網(wǎng)絡(luò)通信編程的步驟。能力目標(biāo)能會(huì)編寫(xiě)UDP程序;能會(huì)進(jìn)行UDP協(xié)議操作。內(nèi)容4任務(wù)陳述123知識(shí)準(zhǔn)備任務(wù)實(shí)施任務(wù)拓展任務(wù)實(shí)訓(xùn)5 1. 任務(wù)陳述任務(wù)描述本次任務(wù)要基于UDP實(shí)現(xiàn)一個(gè)局域網(wǎng)聊天系統(tǒng)。任務(wù)要求如下:客戶端采用UDP協(xié)議與服務(wù)器連接客戶端可以設(shè)置服務(wù)器地址與端口服務(wù)器可以維護(hù)客戶端個(gè)人信息服務(wù)器可以記錄客戶端狀態(tài)信息 2. 知識(shí)準(zhǔn)備6.1 基于UDP的網(wǎng)絡(luò)編程原理 2. 知識(shí)準(zhǔn)備6.2 UDP網(wǎng)絡(luò)編程相關(guān)類的使用6.2.1 DatagramPacket類Dat

2、agramPacket類表示數(shù)據(jù)包,起到數(shù)據(jù)容器的作用。數(shù)據(jù)包用來(lái)實(shí)現(xiàn)無(wú)連接包投遞服務(wù)。每條報(bào)文僅根據(jù)該包中包含的信息從一臺(tái)機(jī)器路由到另一臺(tái)機(jī)器。從一臺(tái)機(jī)器發(fā)送到另一臺(tái)機(jī)器的多個(gè)包可能選擇不同的路由,也可能按不同的順序到達(dá)。不對(duì)包投遞做出保證。常用構(gòu)造方法如下:DatagramPacket(byte data, int size) 構(gòu)造 DatagramPacket,用來(lái)接收長(zhǎng)度為 size 的數(shù)據(jù)包。DatagramPacket(byte data, int size, InetAddress I, int port) 構(gòu)造數(shù)據(jù)報(bào)包,用來(lái)將長(zhǎng)度為 size 的包發(fā)送到指定主機(jī)上的指定端口號(hào)。

3、 2. 知識(shí)準(zhǔn)備6.2.2 DatagramSocket類DatagramSocket類表示用來(lái)發(fā)送和接收數(shù)據(jù)包的套接字,用于發(fā)送或接收 DatagramPacket。DatagramSocket構(gòu)造方法:DatagramSocket() 構(gòu)造數(shù)據(jù)報(bào)套接字并將其綁定到本地主機(jī)上任何可用的端口。DatagramSocket(int port)創(chuàng)建數(shù)據(jù)報(bào)套接字并將其綁定到本地主機(jī)上的指定端口。其他常用方法:void send(DatagramPacket d) 從此套接字發(fā)送數(shù)據(jù)包。void receive(DatagramPacket p) 從此套接字接收數(shù)據(jù)包。void close() 關(guān)閉此

4、數(shù)據(jù)報(bào)套接字。 2. 知識(shí)準(zhǔn)備 【例5-22】演示通過(guò)UDP協(xié)議通信的過(guò)程。 要求:DatagramServer類接收用戶從控制臺(tái)輸入的字符串,并將字符串發(fā)送給DatagramClient。DatagramClient接收并顯示收到的字符串。當(dāng)用戶輸入 end 時(shí),DatagramServer發(fā)送完就退出運(yùn)行。DatagramClient接收到 end 字符串后也立刻退出運(yùn)行。 2. 知識(shí)準(zhǔn)備服務(wù)器端關(guān)鍵代碼ds = new DatagramSocket(SERVER_PORT);BufferedReader dis = new BufferedReader(new InputStreamRe

5、ader(System.in);System.out.println(服務(wù)器正在等待輸入);InetAddress ia = InetAddress.getByName(localhost);while(true)String str = dis.readLine();buffer = str.getBytes();ds.send(new DatagramPacket(buffer, str.length(), ia, CLIENT_PORT);if( (str = null) | str.equals(end) )break; 2. 知識(shí)準(zhǔn)備客戶端關(guān)鍵代碼ds = new DatagramS

6、ocket(CLIENT_PORT);System.out.println(客戶機(jī)正在等待服務(wù)器發(fā)送數(shù)據(jù));while(true)DatagramPacket p = new DatagramPacket(buffer, buffer.length);ds.receive(p);String psx = new String(p.getData(), 0, p.getLength();System.out.println(psx);if(psx.equalsIgnoreCase(end) break;System.out.println(客戶機(jī)退出運(yùn)行); 2. 知識(shí)準(zhǔn)備運(yùn)行結(jié)果: 2. 知識(shí)

7、準(zhǔn)備6.2.3 網(wǎng)絡(luò)編程實(shí)現(xiàn)廣播廣播通信的特點(diǎn)是一個(gè)發(fā)送,多個(gè)接收。廣播使用的地址范圍:55廣播使用的類:MulticastSocket和DatagramPacket。 2. 知識(shí)準(zhǔn)備發(fā)送廣播消息的關(guān)鍵代碼:MulticastSocket s = new MulticastSocket(6789); / 構(gòu)造廣播對(duì)象/ 加入廣播組InetAddress group = InetAddress.getByName(); s.joinGroup(group); / 創(chuàng)建數(shù)據(jù)包String msg = Hello;DatagramPacket hi = new DatagramPacket(msg.

8、getBytes(), msg.length(), group, 6789); / 設(shè)置發(fā)送范圍、發(fā)送s. setTimeToLive(1);s.send(hi); 2. 知識(shí)準(zhǔn)備接收廣播消息的關(guān)鍵代碼:MulticastSocket s = new MulticastSocket(6789); / 構(gòu)造廣播對(duì)象/ 加入廣播組InetAddress group = InetAddress.getByName(); s.joinGroup(group);/ 準(zhǔn)備緩沖區(qū)byte buf = new byte1000; DatagramPacket recv = new DatagramPacket

9、(buf, buf.length); s.receive(recv); / 接收數(shù)據(jù)s.leaveGroup(group); /離開(kāi)分組 3. 任務(wù)實(shí)施實(shí)現(xiàn)思路創(chuàng)建一個(gè)類UdpDialogFrame,既作為信息發(fā)送端,又作為信息接收端。程序運(yùn)行時(shí),顯示本機(jī)IP地址和所用端口號(hào)。允許用戶輸入信息發(fā)送目標(biāo)的IP地址和端口號(hào)。在線程體中接收數(shù)據(jù)包,在TextListener接口的文本變化事件處理方法中發(fā)送數(shù)據(jù)包。定義類UdpDialogFrame繼承Frame實(shí)現(xiàn)TextListener, Runnable接口。在UdpDialogFrame類的構(gòu)造方法中構(gòu)造窗口界面,啟動(dòng)數(shù)據(jù)接收線程在textVa

10、lueChanged方法中發(fā)送信息在run方法中接收并顯示信息創(chuàng)建主類UdpDemo,創(chuàng)建UdpDialogFrame類對(duì)象 3. 任務(wù)實(shí)施事件處理關(guān)鍵代碼:int nPort = Integer.parseInt(m_tfDestPort.getText();InetAddress destIP = InetAddress.getAllByName(m_tfDestIP.getText();if (destIP.length 0) DatagramPacket pak = new DatagramPacket(data,data.length, destIP0, nPort);/省略異常處理

11、DatagramSocket skt = new DatagramSocket();System.out.println(“senddata=”);skt.send(pak); 3. 任務(wù)實(shí)施接收線程關(guān)鍵代碼:DatagramSocket skt = new DatagramSocket(980);byte data = new byte1024;DatagramPacket pak = new DatagramPacket(data, data.length);skt.receive(pak);if (pak.getLength() 0) String s = new String(data

12、); String t = m_taGet.getText();System.out.println(“getdata=” + pak.getLength() + “n”);if (t.endsWith(n) m_taGet.setText(t + s); else m_taGet.setText(t + “n” + s); 4.任務(wù)拓展URL類:可以定位互聯(lián)網(wǎng)上任意一臺(tái)服務(wù)器上的文件。一個(gè)URL對(duì)象 代表一個(gè)統(tǒng)一資源定位符,它是指向互聯(lián)網(wǎng)“資源”的指針。資源可以是簡(jiǎn)單的文件或目錄,也可以是對(duì)更為復(fù)雜的對(duì)象的引用,例如對(duì)數(shù)據(jù)庫(kù)或搜索引擎的查詢。URL 類提供 API 來(lái)訪問(wèn) Internet

13、上的信息。URL類的構(gòu)造方法:URL(String urlname) 根據(jù) String 表示形式創(chuàng)建 URL 對(duì)象.URL(String protocol, String hostname, int port, String path) 根據(jù)指定 protocol、host、port 號(hào)和 file 創(chuàng)建 URL 對(duì)象.URL(String protocol, String hostname, String path) 根據(jù)指定的 protocol 名稱、host 名稱和 file 名稱創(chuàng)建 URL. 4.任務(wù)拓展【例5-24】演示URL類中幾個(gè)方法的使用。URL url = new URL(:80/root/htmlfiles/index.html);System.out.println(URL中的主機(jī)是:+url.getHost();System.out.println(使用的協(xié)議是:+url.getProtocol();System.out.println(使用的端口是:+url.getPort();Sy

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論