![第 9 章 Java網(wǎng)絡(luò)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/c2f93092-4375-4b9d-bd9a-2b21e69db215/c2f93092-4375-4b9d-bd9a-2b21e69db2151.gif)
![第 9 章 Java網(wǎng)絡(luò)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/c2f93092-4375-4b9d-bd9a-2b21e69db215/c2f93092-4375-4b9d-bd9a-2b21e69db2152.gif)
![第 9 章 Java網(wǎng)絡(luò)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/c2f93092-4375-4b9d-bd9a-2b21e69db215/c2f93092-4375-4b9d-bd9a-2b21e69db2153.gif)
![第 9 章 Java網(wǎng)絡(luò)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/c2f93092-4375-4b9d-bd9a-2b21e69db215/c2f93092-4375-4b9d-bd9a-2b21e69db2154.gif)
![第 9 章 Java網(wǎng)絡(luò)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-6/2/c2f93092-4375-4b9d-bd9a-2b21e69db215/c2f93092-4375-4b9d-bd9a-2b21e69db2155.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非1第第9章章 網(wǎng)絡(luò)通信網(wǎng)絡(luò)通信Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非2主要內(nèi)容主要內(nèi)容9.1網(wǎng)絡(luò)編程的基礎(chǔ)知識(shí)9.2 基于TCP協(xié)議網(wǎng)絡(luò)程序設(shè)計(jì)9.3 基于UDP協(xié)議網(wǎng)絡(luò)程序設(shè)計(jì)9.4 JApplet編程9.5基于分布模式的云計(jì)算系統(tǒng)Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非39.1網(wǎng)絡(luò)編程的基礎(chǔ)知識(shí)網(wǎng)絡(luò)編程的基礎(chǔ)知識(shí)9.1.1IP地址和端口號(hào)地址
2、和端口號(hào)9.1.2套接字套接字Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非49.1.1IP地址和端口號(hào)地址和端口號(hào)1、IP地址地址 網(wǎng)絡(luò)中的每臺(tái)計(jì)算機(jī)都必須有一個(gè)惟一的IP地址作為標(biāo)識(shí),這個(gè)數(shù)通常寫作一組由“.”號(hào)分隔的十進(jìn)制數(shù)。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非59.1.1IP地址和端口號(hào)地址和端口號(hào)在J包中,IP地址由一個(gè)稱作InetAddress的特殊的類來描述。這個(gè)類提供了三個(gè)用來獲得一個(gè)InetAddress類的實(shí)例的靜態(tài)方法。這三個(gè)方法是:g
3、etLocalHost( )返回一個(gè)本地主機(jī)的IP地址。getByName(String host )返回對(duì)應(yīng)于指定主機(jī)的IP地址。getAllByName(String host )對(duì)于某個(gè)主機(jī)有多個(gè)IP地址(多宿主機(jī))可用于得到一個(gè)IP地址數(shù)組。此外,對(duì)一個(gè)InetAddress的實(shí)例可以使用:getAddress( )獲得一個(gè)用字節(jié)數(shù)組形式表示的IP地址。getHostName( )作反向查詢,獲得對(duì)應(yīng)于某個(gè)IP地址的主機(jī)名。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非6【例【例9-1】通過域名查找】通過域名查找IP地址。
4、地址。核心語(yǔ)句:try InetAddress zsm_address; zsm_address =InetAddress.getByName(); str=思維論壇的IP地址為:+zsm_address.toString(); catch(UnknownHostException e) str=無法找到思維論壇; Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非7【例【例9-2】查找本機(jī)】查找本機(jī)IP地址。地址。 核心語(yǔ)句: try InetAddress host_address; host_address=InetAddres
5、s.getLocalHost(); str=本機(jī)的IP地址為:+host_address.toString(); catch(UnknownHostException e) str=本機(jī)沒有安裝網(wǎng)卡,無法找到IP。; Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非89.1.1IP地址和端口號(hào)地址和端口號(hào)2、端口 我們用“端口號(hào)”來標(biāo)識(shí)正在計(jì)算機(jī)上運(yùn)行的進(jìn)程(程序)。每個(gè)被發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)包也都包含有“端口號(hào)”,用于將該數(shù)據(jù)幀交給具有相同端口號(hào)的應(yīng)用程序來處理。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大
6、學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非99.1.1IP地址和端口號(hào)地址和端口號(hào)2、端口 端口號(hào)是一個(gè)整數(shù),其取值范圍為065535之間。由于同一臺(tái)計(jì)算機(jī)上不能同時(shí)運(yùn)行兩個(gè)有相同端口號(hào)的進(jìn)程。通常01023間的端口號(hào)作為保留端口號(hào),用于一些網(wǎng)絡(luò)系統(tǒng)服務(wù)和應(yīng)用,用戶的普通網(wǎng)絡(luò)應(yīng)用程序應(yīng)該使用1024以后的端口號(hào),從而避免端口號(hào)沖突。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非109.1.1IP地址和端口號(hào)地址和端口號(hào)3、TCP與UDP協(xié)議 在網(wǎng)絡(luò)中,有兩個(gè)常用的協(xié)議,它們是“傳輸控制協(xié)議”(Transmission Control P
7、rotocol,簡(jiǎn)稱TCP)和“用戶數(shù)據(jù)報(bào)協(xié)議”(User Datagram Protocol,簡(jiǎn)稱:UDP)。 TCP是面向連接的通信協(xié)議,TCP提供兩臺(tái)計(jì)算機(jī)之間的可靠無差錯(cuò)的數(shù)據(jù)傳輸。 UDP是無連接通信協(xié)議,UDP不保證可靠數(shù)據(jù)的傳輸。 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非119.1.2套接字套接字1、什么是套接字 在TCP/IP通信協(xié)議中,套接字(Socket)就是IP地址與端口號(hào)的組合。 如圖所示,IP地址193.14.26.7與端口號(hào)13組成一個(gè)套接字。 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思
8、張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非129.1.2套接字套接字1、什么是套接字網(wǎng)絡(luò)通信,準(zhǔn)確地說,不能僅說成是兩臺(tái)計(jì)算機(jī)之間在通信,而是兩臺(tái)計(jì)算機(jī)上執(zhí)行的網(wǎng)絡(luò)應(yīng)用程序(進(jìn)程)之間在收發(fā)數(shù)據(jù)。當(dāng)兩個(gè)網(wǎng)絡(luò)程序需要通信時(shí),它們可以通過使用Socket類建立套接字連接。我們把呼叫方稱為“客戶端”,負(fù)責(zé)監(jiān)聽的一方稱為“服務(wù)器端”。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非139.1.2套接字套接字2、客戶端建立套接字Socket對(duì)象在客戶端使用socket類,建立向指定服務(wù)器IP和端口號(hào)連接的套接字,其構(gòu)造方法是:
9、 Socket(host_IP, prot); 其中host_IP是服務(wù)器的IP地址,prot是一個(gè)端口號(hào)。Socket主要方法有: getInputStream( ):獲得一個(gè)輸入流,讀取從網(wǎng)絡(luò)線路上傳送來的數(shù)據(jù)信息。 getOutputStream( ):獲得一個(gè)輸出流,用這個(gè)輸出流將數(shù)據(jù)信息寫入到網(wǎng)絡(luò)“線路”上。 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非149.1.2套接字套接字3、服務(wù)器端建立套接字Socket對(duì)象 在服務(wù)器端用ServerSocket類創(chuàng)建服務(wù)器Socket,ServerSocket類的構(gòu)造方法為:
10、 ServerSocket(int port);創(chuàng)建ServerSocket實(shí)例是不需要指定IP地址的,ServerSocket總是處于監(jiān)聽本機(jī)端口的狀態(tài)。ServerSocket類的主要方法: Socket accept(); 該方法用于在服務(wù)器端的指定端口監(jiān)聽客戶機(jī)發(fā)起的連接請(qǐng)求,并與之連接,其返回值為Socket對(duì)象。 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非159.2 基于基于TCP協(xié)議網(wǎng)絡(luò)程序設(shè)計(jì)協(xié)議網(wǎng)絡(luò)程序設(shè)計(jì)9.2.1客戶機(jī)/服務(wù)器模式9.2.2同時(shí)服務(wù)于多個(gè)客戶的解決方案Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第
11、2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非169.2.1客戶機(jī)客戶機(jī)/服務(wù)器模式服務(wù)器模式 利用利用Socket方式進(jìn)行數(shù)據(jù)通信與傳輸,大致有如下步驟:方式進(jìn)行數(shù)據(jù)通信與傳輸,大致有如下步驟:(1)創(chuàng)建服務(wù)器端ServerSocket,設(shè)置建立連接的端口號(hào)。(2)創(chuàng)建客戶端Socket對(duì)象,設(shè)置綁定的主機(jī)名稱或IP地址,指定連接端口號(hào)。(3)客戶機(jī)Socket發(fā)起連接請(qǐng)求。(4)建立連接。(5)取得InputStream和OutputStream。(6)利用InputStream和OutputStream進(jìn)行數(shù)據(jù)傳輸。(7)關(guān)閉Socket和ServerSocke
12、t。 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非17Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非18【例【例9-3】遠(yuǎn)程數(shù)據(jù)通信示例,本例由客戶端程】遠(yuǎn)程數(shù)據(jù)通信示例,本例由客戶端程序和服務(wù)器程序兩部分組成。序和服務(wù)器程序兩部分組成。 (1)客戶端程序(2)服務(wù)器端程序Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非199.2.2同時(shí)服務(wù)于多個(gè)客戶的解決方案同時(shí)服務(wù)于多個(gè)客戶的解決方案1、啟動(dòng)多個(gè)服務(wù)
13、程序、啟動(dòng)多個(gè)服務(wù)程序 我們可以在服務(wù)器端啟動(dòng)多個(gè)服務(wù)程序,等待客戶機(jī)的連接請(qǐng)求,每個(gè)服務(wù)程序處理一個(gè)客戶機(jī)數(shù)據(jù),它們只是監(jiān)聽的端口號(hào)不同。顯然,這個(gè)方案耗用資源太多。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非209.2.2同時(shí)服務(wù)于多個(gè)客戶的解決方案同時(shí)服務(wù)于多個(gè)客戶的解決方案2、應(yīng)用多線程、應(yīng)用多線程 在服務(wù)程序中應(yīng)用多線程技術(shù),不同的線程為不同的客戶服務(wù)。主線程負(fù)責(zé)等待客戶機(jī)的連接請(qǐng)求,各個(gè)線程負(fù)責(zé)網(wǎng)絡(luò)連接,接收客戶發(fā)送來的信息。 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工
14、業(yè)大學(xué)計(jì)算機(jī)系代亞非21【例9-4】服務(wù)程序應(yīng)用多線程技術(shù)同時(shí)處理多個(gè)客戶機(jī)的連接請(qǐng)求。 (1)客戶端程序 (2)服務(wù)器端程序 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非229.3 基于基于UDP協(xié)議網(wǎng)絡(luò)程序設(shè)計(jì)協(xié)議網(wǎng)絡(luò)程序設(shè)計(jì)9.3.1基于UDP協(xié)議的數(shù)據(jù)報(bào)套接字9.3.2數(shù)據(jù)報(bào)的程序設(shè)計(jì)過程9.3.3廣播數(shù)據(jù)報(bào)套接字Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非239.3.1基于基于UDP協(xié)議的數(shù)據(jù)報(bào)套接字協(xié)議的數(shù)據(jù)報(bào)套接字 TCP協(xié)議通過socket套接字建
15、立一條虛電路。TCP協(xié)議的socketserverclientDatagram數(shù)據(jù)報(bào)數(shù)據(jù)報(bào)serverclientUDP數(shù)據(jù)報(bào)的每個(gè)數(shù)據(jù)包要包含目的地址和端口號(hào).Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非24在UDP中,要使用二個(gè)類: (1) DatagramSocket 類發(fā)送時(shí),用 send( )方法發(fā)送數(shù)據(jù);接收時(shí),用 receive( )方法接收數(shù)據(jù)。(2) DatagramPacket 類 用于打包或拆包 發(fā)送時(shí)打包: 包由數(shù)據(jù)、接收地址、端口號(hào)組成; 接收時(shí)拆包: 取出包中的數(shù)據(jù)、接收地址、端口號(hào)。Java語(yǔ)言程序
16、設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非259.3.2數(shù)據(jù)報(bào)的程序設(shè)計(jì)過程數(shù)據(jù)報(bào)的程序設(shè)計(jì)過程1、服務(wù)器端發(fā)出報(bào)文的步驟、服務(wù)器端發(fā)出報(bào)文的步驟 (1)定義數(shù)據(jù)成員。 DatagramSocket socket; DatagramPacket packet; InetAddress address;(用來存放接收方的地址) int port; (用來存放接收方的端口號(hào))(2)創(chuàng)建數(shù)據(jù)報(bào)文Socket對(duì)象。 try socket = new DatagramSocket(1111); catch(.SocketException e) soc
17、ket 綁定到一個(gè)本地的可用端口,等待接收客戶的請(qǐng)求。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非269.3.2數(shù)據(jù)報(bào)的程序設(shè)計(jì)過程數(shù)據(jù)報(bào)的程序設(shè)計(jì)過程1、服務(wù)器端發(fā)出報(bào)文的步驟、服務(wù)器端發(fā)出報(bào)文的步驟 (3)分配并填寫數(shù)據(jù)緩沖區(qū)(一個(gè)字節(jié)類型的數(shù)組)。 byte Buf = new byte256; 存放從客戶端接收的請(qǐng)求信息.(4)創(chuàng)建一個(gè)DatagramPacket。 packet = new DatagramPacket(Buf數(shù)組, 256字節(jié)長(zhǎng)度); 用來從socket接收數(shù)據(jù),它只有兩個(gè)參數(shù)。(5)服務(wù)器阻塞。 s
18、ocket.receive(packet); 在客戶的請(qǐng)求報(bào)道來之前一直等待。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非279.3.2數(shù)據(jù)報(bào)的程序設(shè)計(jì)過程數(shù)據(jù)報(bào)的程序設(shè)計(jì)過程1、服務(wù)器端發(fā)出報(bào)文的步驟、服務(wù)器端發(fā)出報(bào)文的步驟 (6)從到來的包中得到地址和端口號(hào)。 InetAddress address = packet.getAddress(); int port = packet.getPort();(7)將數(shù)據(jù)送入緩沖區(qū)。來自文件,或鍵盤輸入。 (8)建立報(bào)文包,用來從socket上發(fā)送信息。 Packet = new D
19、atagramPacket(buf, buf.length, address, port);(9)發(fā)送數(shù)據(jù)包。socket.send(packet);(10)關(guān)閉socket。 socket.close();Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非289.3.2數(shù)據(jù)報(bào)的程序設(shè)計(jì)過程數(shù)據(jù)報(bào)的程序設(shè)計(jì)過程2、客戶端接收包的步驟、客戶端接收包的步驟 (1)定義數(shù)據(jù)成員。 int port; InetAddress address; DatagramSocket socket; DatagramPacket packet; byte
20、 sendBuf = new byte256;(2)建立socket。 socket = new DatagramSocket();(3)向服務(wù)器發(fā)出請(qǐng)求報(bào)文。 address = InetAddress.getByName(args0); port = parseInt(args1); packet = new DatagramPacket(sendBuf, 256, address, port); socket.send(packet);Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非299.3.2數(shù)據(jù)報(bào)的程序設(shè)計(jì)過程數(shù)據(jù)報(bào)的程
21、序設(shè)計(jì)過程2、客戶端接收包的步驟、客戶端接收包的步驟 (4)客戶機(jī)等待應(yīng)答。 packet = new DatagramPacket(sendBuf, 256); socket.receive(packet);(如果沒有到就一直等待,因此程序要設(shè)置時(shí)間限度) (5)處理接收到的數(shù)據(jù)。 String received = new String(packet.getData(), 0, packet.getLength(); System.out.println(received); Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非30
22、數(shù)據(jù)報(bào)工作過程建立數(shù)據(jù)報(bào)建立數(shù)據(jù)報(bào)socket();建立一個(gè)報(bào)文包建立一個(gè)報(bào)文包packet等待請(qǐng)求報(bào)文等待請(qǐng)求報(bào)文建立數(shù)據(jù)報(bào)建立數(shù)據(jù)報(bào)socket建立一個(gè)請(qǐng)求包建立一個(gè)請(qǐng)求包發(fā)出請(qǐng)求發(fā)出請(qǐng)求獲得對(duì)方地址獲得對(duì)方地址構(gòu)成信息包構(gòu)成信息包發(fā)送出去發(fā)送出去創(chuàng)建接收包創(chuàng)建接收包等待接收等待接收J(rèn)ava語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非31【例【例9-59-5】一個(gè)簡(jiǎn)單的數(shù)據(jù)報(bào)示例?!恳粋€(gè)簡(jiǎn)單的數(shù)據(jù)報(bào)示例。(1)主機(jī)1(數(shù)據(jù)發(fā)送方):(2)主機(jī)2(數(shù)據(jù)接收方):Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大
23、學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非329.3.3廣播數(shù)據(jù)報(bào)套接字廣播數(shù)據(jù)報(bào)套接字 我們把網(wǎng)絡(luò)上的IP地址劃分為A、B、C、D四類,它們是:A類地址為:0.0.0.0127.255.255.255B類地址為:128.0.0.0191.255.255.255C類地址為:192.0.0.0223.255.255.255D類地址為:224.0.0.0239.255.255.255廣播數(shù)據(jù)報(bào)套接字就是利用網(wǎng)絡(luò)系統(tǒng)保留的D類地址進(jìn)行發(fā)送和接收數(shù)據(jù)。一個(gè)D類地址稱為一個(gè)廣播組,把要廣播或接收廣播的主機(jī)都加入到同一個(gè)廣播組中,即設(shè)置為相同的D類IP地址。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張
24、思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非339.3.3廣播數(shù)據(jù)報(bào)套接字廣播數(shù)據(jù)報(bào)套接字在java中,廣播數(shù)據(jù)報(bào)套接字為MulticastSocket類實(shí)現(xiàn),MulticastSocket 是UDP協(xié)議 套接字DatagramSocket的子類 ,其構(gòu)造方法為:(1)MulticastSocket() 創(chuàng)建多播套接字。 (2)MulticastSocket(int port) 創(chuàng)建多播套接字并將其綁定到指定端口。 MulticastSocket類的常用方法:(1)void joinGroup(InetAddress mcastaddr) 加入多播組。 (2)void setTim
25、eToLive(int ttl) 設(shè)置在此 MulticastSocket 上發(fā)出的多播數(shù)據(jù)包的默認(rèn)生存時(shí)間,以便控制多播的范圍。 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非34【例【例9-69-6】一個(gè)廣播數(shù)據(jù)報(bào)套接字的演示示例?!恳粋€(gè)廣播數(shù)據(jù)報(bào)套接字的演示示例。在這個(gè)例子中,一個(gè)主機(jī)不斷地重復(fù)播發(fā)圖像文件,加入到同一組的主機(jī)可以隨時(shí)接收廣播的數(shù)據(jù)內(nèi)容。接收方接收信息后,將接收到的信息在窗體中顯示出來。 (a)信息發(fā)送方播發(fā)信息(b)顯示接收到的信息內(nèi)容(圖像文件)Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編
26、著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非359.4 JApplet編程編程9.4.1 JApplet及常用方法及常用方法9.4.2 JApplet應(yīng)用示例應(yīng)用示例Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非369.4.1 JApplet及常用方法及常用方法JApplet是一個(gè)能夠嵌入到HTML頁(yè)面中并在瀏覽器中運(yùn)行的Java程序。當(dāng)使用瀏覽器對(duì)一個(gè)包含JApplet的Web頁(yè)面進(jìn)行瀏覽時(shí),瀏覽器將從Web服務(wù)器下載JApplet程序到本地執(zhí)行。 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大
27、學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非379.4.1 JApplet及常用方法及常用方法1、JApplet的主要特性的主要特性JApplet類是一個(gè)很特殊的容器,它Applet的子類,Applet是從Java的抽象窗口工具集類庫(kù)(awt)中的Panel類擴(kuò)展而來的,它將繼承Panel的所有屬性。因此,JApplet類具有容器的特性,在其內(nèi)部可以放置swing組件。 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非389.4.1 JApplet及常用方法及常用方法2、JApplet的常用方法的常用方法方法名功能JApplet()JApp
28、let的構(gòu)造方法void init() 由瀏覽器調(diào)用,完成初始化。void start()由瀏覽器調(diào)用,開始applet運(yùn)行。void stop() 由瀏覽器調(diào)用,終止applet執(zhí)行。void destroy()由瀏覽器調(diào)用,回收分配給applet的資源void play(URL url)播放在URL指定的音頻剪輯。AudioClip getAudioClip(URL url)返回 URL 參數(shù)指定的 AudioClip 對(duì)象。Image getImage(URL url) 返回能被繪制到屏幕上的 Image 對(duì)象。URL getDocumentBase()返回文檔的URL路徑void se
29、tJMenuBar(JMenuBar menuBar)設(shè)置JApplet的菜單欄。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非399.4.1 JApplet及常用方法及常用方法3、JApplet程序的一般形式程序的一般形式 一個(gè)JApplet程序必須是JApplet的子類,它必須是public的。JApplet程序的一般形式為:import javax.JApplet.*;public 類名類名 extends JApplet public void init(); public void start(); public voi
30、d stop(); public void destroy(); Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非409.4.1 JApplet及常用方法及常用方法4、JApplet程序的運(yùn)行程序的運(yùn)行為了執(zhí)行Applet,必須在HTML文檔中使用特殊的標(biāo)記,即標(biāo)記來調(diào)用Applet。例如: Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非419.4.2 JApplet應(yīng)用示例應(yīng)用示例 【例【例9-7】在瀏覽器中運(yùn)行】在瀏覽器中運(yùn)行JApplet程序。程序。1. impo
31、rt javax.swing.*;2. public class Example9_7 extends JApplet3. 4. public void init() 5. 6. JButton btn = new JButton(確定確定);7. add(btn);8. 9. 編譯這個(gè)源程序,得到一個(gè)Example9_7.class字節(jié)碼文件。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非42使用記事本之類的文本編輯工具,編寫一個(gè)HTML文件如下:將這個(gè)超文本文件保存為e9_7.html,并且與Example9_7.class在
32、同一文件目錄下。現(xiàn)在使用瀏覽器打開文件e9_7.html就可看到JApplet程序的運(yùn)行結(jié)果。 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非43【例【例9-8】用用getImage()方法和方法和drawImage()方方法加載和顯示圖像。法加載和顯示圖像。 核心語(yǔ)句:9. public void init() 10. img = getImage(getDocumentBase(), getParameter(img); 11. 12.13. public void paint(Graphics g) 14. g.drawIm
33、age(img, 0, 0, this); 15. Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非44【例【例9-99-9】在】在JAppletJApplet程序中使用程序中使用play()play()方法播放方法播放聲音文件。聲音文件。可以使用JApplet的靜態(tài)方法編寫播放.wav等格式的音頻文件的程序。1.import java.swing.*;2.import java.awt.Graphics;3.public class Example9_9 extends JApplet 4. public void paint(G
34、raphics g) 5. g.drawString(Listen to the music!, 25, 25);6. play(getDocumentBase(), 茉莉花.wav);7. 8.Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非45【例【例9-109-10】使用】使用getAudioClip()getAudioClip()方法播放聲音文件。方法播放聲音文件。用getAudioClip()方法建立的AudioClip對(duì)象可以處理聲音:play()開始播放;loop()循環(huán)播放;stop() 停止播放。Java語(yǔ)言程序設(shè)
35、計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非469.5基于分布模式的云計(jì)算系統(tǒng)基于分布模式的云計(jì)算系統(tǒng)9.5.1分布模式的云計(jì)算分布模式的云計(jì)算9.5.2簡(jiǎn)易云計(jì)算系統(tǒng)設(shè)計(jì)簡(jiǎn)易云計(jì)算系統(tǒng)設(shè)計(jì)Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非479.5.1分布模式的云計(jì)算分布模式的云計(jì)算在傳統(tǒng)的客戶/服務(wù)環(huán)境中,一般有一個(gè)功能強(qiáng)大的計(jì)算機(jī)作為服務(wù)器為多個(gè)客戶提供服務(wù),下面將討論一種以客戶端為核心、多個(gè)服務(wù)器為其提供服務(wù)的計(jì)算模式。這種客戶/服務(wù)器方式的云計(jì)算非常適合分布式系統(tǒng)模型下實(shí)現(xiàn),該
36、模型可以分為3個(gè)角色:管理節(jié)點(diǎn)、子節(jié)點(diǎn)和客戶端。管理節(jié)點(diǎn)和子節(jié)點(diǎn)構(gòu)成了云計(jì)算的服務(wù)器端,客戶端通過對(duì)API的調(diào)用實(shí)現(xiàn)對(duì)云計(jì)算系統(tǒng)的訪問,并通過API整合為不同的應(yīng)用程序。Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非489.5.1分布模式的云計(jì)算分布模式的云計(jì)算在這種分布模型下,一個(gè)并行應(yīng)用很容易使用這種客戶/服務(wù)器模式來設(shè)計(jì):一個(gè)客戶可以將一個(gè)大的應(yīng)用分成若干小的問題,這些小的問題可以由多個(gè)服務(wù)器程序(子節(jié)點(diǎn))同時(shí)處理,所以服務(wù)器程序?qū)ο鄳?yīng)問題求得解答后,再發(fā)送給客戶機(jī)??蛻魴C(jī)匯集所有從服務(wù)器程序發(fā)來的結(jié)果,然后再輸出給用戶。J
37、ava語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非499.5.1分布模式的云計(jì)算分布模式的云計(jì)算在具體實(shí)現(xiàn)這個(gè)模型的過程中,要將多個(gè)可用服務(wù)器(子節(jié)點(diǎn))和它們的Internet域名保存在一個(gè)node.txt文件中,這個(gè)文件稱為子節(jié)點(diǎn)配置文件,由客戶程序存取它??蛻魴C(jī)同時(shí)還要讀取另一個(gè)文件root.txt,稱為用戶配置文件,它包括用戶定義的應(yīng)用參數(shù)。子節(jié)點(diǎn)配置文件node.txt和用戶配置文件root.txt構(gòu)成管理節(jié)點(diǎn)。 Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非509.5.1分布模式的云計(jì)算分布模式的云計(jì)算基于分布模式的云計(jì)算系統(tǒng) Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非519.5.2簡(jiǎn)易云計(jì)算系統(tǒng)設(shè)計(jì)簡(jiǎn)易云計(jì)算系統(tǒng)設(shè)計(jì) 下面設(shè)計(jì)一個(gè)簡(jiǎn)易云計(jì)算系統(tǒng),該系統(tǒng)實(shí)現(xiàn)由多臺(tái)服務(wù)器共同完成n 階矩陣的乘法運(yùn)算任務(wù)。1、系統(tǒng)結(jié)構(gòu)、系統(tǒng)結(jié)構(gòu)Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出版社哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系代亞非52Java語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)(第第2版版) 張思張思民編著民編著清華大學(xué)出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療器械工程居間合同范本
- 施工電梯布置專項(xiàng)方案
- 食品安全風(fēng)險(xiǎn)評(píng)估與管理技術(shù)作業(yè)指導(dǎo)書
- 承包山林合同書
- 市場(chǎng)營(yíng)銷策略制定與實(shí)施作業(yè)指導(dǎo)書
- 停車場(chǎng)管理服務(wù)合同
- 住房和城鄉(xiāng)建設(shè)委員會(huì)
- 林業(yè)經(jīng)濟(jì)管理與政策作業(yè)指導(dǎo)書
- 雞舍租賃合同
- 技術(shù)服務(wù)合同格式
- GB/T 19228.1-2024不銹鋼卡壓式管件組件第1部分:卡壓式管件
- YC/T 295-2009卷煙制造過程能力測(cè)評(píng)導(dǎo)則
- 仁愛英語(yǔ)八年級(jí)閱讀理解測(cè)試題和答案
- 山東省中考物理總復(fù)習(xí) 八上 第4講 光現(xiàn)象
- DB11∕T 1875-2021 市政工程施工安全操作規(guī)程
- 心肺康復(fù)完整版本課件
- 傳統(tǒng)節(jié)日春節(jié)英文介紹課件
- 質(zhì)量獎(jiǎng)現(xiàn)場(chǎng)評(píng)審問題集錦精編版
- 裝配式結(jié)構(gòu)技術(shù)課程教學(xué)大綱
- 水資源論證報(bào)告
- 中藥提取車間生產(chǎn)設(shè)備風(fēng)險(xiǎn)評(píng)估報(bào)告講解
評(píng)論
0/150
提交評(píng)論