Java 2實(shí)用教程第4版_第13章_Java網(wǎng)絡(luò)編程_第1頁(yè)
Java 2實(shí)用教程第4版_第13章_Java網(wǎng)絡(luò)編程_第2頁(yè)
Java 2實(shí)用教程第4版_第13章_Java網(wǎng)絡(luò)編程_第3頁(yè)
Java 2實(shí)用教程第4版_第13章_Java網(wǎng)絡(luò)編程_第4頁(yè)
Java 2實(shí)用教程第4版_第13章_Java網(wǎng)絡(luò)編程_第5頁(yè)
已閱讀5頁(yè),還剩21頁(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、.1 頁(yè)1注意:開始用功了!注意:開始用功了!.2 頁(yè)2Java2實(shí)用教程實(shí)用教程(第第4版版) 第第13章章配合例子源代碼一起使用例子源代碼一起使用Power point 制作:耿祥義 張躍平JavaJava網(wǎng)絡(luò)編程網(wǎng)絡(luò)編程 .3 頁(yè)3導(dǎo)讀導(dǎo)讀主要內(nèi)容主要內(nèi)容URL類類InetAdress類類套接字套接字UDP數(shù)據(jù)報(bào)數(shù)據(jù)報(bào)廣播數(shù)據(jù)報(bào)廣播數(shù)據(jù)報(bào)Java遠(yuǎn)程調(diào)用遠(yuǎn)程調(diào)用(RMI).4 頁(yè)413.1 URLURL類類 URLURL類是類是包中的一個(gè)重要的類,包中的一個(gè)重要的類,URLURL的實(shí)的實(shí)例封裝著一個(gè)統(tǒng)一資源定位符例封裝著一個(gè)統(tǒng)一資源定位符( (Uniform Resource Unifo

2、rm Resource Locator)Locator),使用使用URLURL創(chuàng)建對(duì)象的應(yīng)用程序稱作客戶端創(chuàng)建對(duì)象的應(yīng)用程序稱作客戶端程序。程序。 一個(gè)一個(gè)URLURL對(duì)象通常包含最基本的三部分信息:協(xié)議、對(duì)象通常包含最基本的三部分信息:協(xié)議、地址、資源。地址、資源。 .5 頁(yè)513.1.1 URLURL的構(gòu)造方法的構(gòu)造方法 URL類通常使用如下的構(gòu)造方法創(chuàng)建一個(gè)類通常使用如下的構(gòu)造方法創(chuàng)建一個(gè)URL對(duì)象:對(duì)象: public URL(String spec) throws MalformedURLException public URL(String protocol, String hos

3、t,String file) throws MalformedURLException .6 頁(yè)613.1.2 讀取讀取URLURL中的資源中的資源 URL對(duì)象調(diào)用對(duì)象調(diào)用 InputStream openStream() 方法可以返回一個(gè)輸入流,該輸入流指向方法可以返回一個(gè)輸入流,該輸入流指向URL對(duì)象所包含的資源。通過(guò)該對(duì)象所包含的資源。通過(guò)該輸入流可以將服務(wù)器上的資源讀入到客戶端。輸入流可以將服務(wù)器上的資源讀入到客戶端。 例子例子1(Example13_1.java , Look.java )用戶在命令行窗用戶在命令行窗口輸入網(wǎng)址,讀取服務(wù)器上口輸入網(wǎng)址,讀取服務(wù)器上的資源的資源 .運(yùn)行

4、效果如圖運(yùn)行效果如圖13.1 .7 頁(yè)713.2 InetAdressInetAdress類類 13.2.1 地址的表示地址的表示 InternetInternet上的主機(jī)有兩種方式表示地址:上的主機(jī)有兩種方式表示地址:1 1域名域名 例如例如 2 2IPIP地址地址 例如例如 202.108.35.210202.108.35.210 包中的包中的InetAddressInetAddress類對(duì)象含有一個(gè)類對(duì)象含有一個(gè)InternetInternet主機(jī)地址主機(jī)地址的域名和的域名和IPIP地址,地址,例如例如 。 .8 頁(yè)813.2.2 獲取地址獲取地址 1獲取獲取Internet上主機(jī)的地址

5、上主機(jī)的地址可以使用可以使用InetAddress類類的靜態(tài)方法的靜態(tài)方法getByName(String s);獲得一個(gè)獲得一個(gè)InetAddress對(duì)象對(duì)象,該對(duì)象含有主機(jī)地址的域名,該對(duì)象含有主機(jī)地址的域名和和IP地址,該對(duì)象用如下格式表示它包含的信息:地址,該對(duì)象用如下格式表示它包含的信息: 2獲取本地機(jī)的地址獲取本地機(jī)的地址我們可以使用我們可以使用InetAddress類類的靜態(tài)方法的靜態(tài)方法getLocalHost()獲得一獲得一個(gè)個(gè)InetAddress對(duì)象對(duì)象,該對(duì)象含有本地機(jī)的域名和該對(duì)象含有本地機(jī)的域名和IP地址。地址。 例子例子2 .9 頁(yè)913.3 套接字套接字 13.

6、3.1 套接字套接字 IPIP地址標(biāo)識(shí)地址標(biāo)識(shí)InternetInternet上的計(jì)算機(jī),端口號(hào)標(biāo)識(shí)正在計(jì)算機(jī)上運(yùn)上的計(jì)算機(jī),端口號(hào)標(biāo)識(shí)正在計(jì)算機(jī)上運(yùn)行的進(jìn)程(程序)。端口號(hào)被規(guī)定為一個(gè)行的進(jìn)程(程序)。端口號(hào)被規(guī)定為一個(gè)1616位的位的0 06553565535之間的之間的整數(shù)。整數(shù)。 當(dāng)兩個(gè)程序需要通信時(shí),它們可以通過(guò)使用當(dāng)兩個(gè)程序需要通信時(shí),它們可以通過(guò)使用SocketSocket類建立套類建立套接字對(duì)象并連接在一起(端口號(hào)與接字對(duì)象并連接在一起(端口號(hào)與IPIP地址的組合得出一個(gè)網(wǎng)絡(luò)套地址的組合得出一個(gè)網(wǎng)絡(luò)套接字)。接字)。 .10 頁(yè)1013.3.2 客戶端套接字客戶端套接字 客戶端

7、的程序使用客戶端的程序使用Socket類建立負(fù)責(zé)連接到服務(wù)器的套接字類建立負(fù)責(zé)連接到服務(wù)器的套接字對(duì)象。對(duì)象。建立連接到服務(wù)器的套接字對(duì)象:建立連接到服務(wù)器的套接字對(duì)象: try Socket mysocket=new Socket(“”,1880); catch(IOException e) 與與mysocket相關(guān)的方法相關(guān)的方法 getInputStream()獲得一個(gè)輸入流獲得一個(gè)輸入流 getOutputStream()獲得一個(gè)輸出流獲得一個(gè)輸出流 用用getInputStream()得到的輸入流接到另一個(gè)得到的輸入流接到另一個(gè)DataInputStreamDataInputStre

8、am數(shù)據(jù)流上數(shù)據(jù)流上 用用getOutputStream()得到的輸出流接到另一個(gè)得到的輸出流接到另一個(gè)DataOutputStream數(shù)據(jù)流上數(shù)據(jù)流上 .11 頁(yè)1113.3.3 ServerSocketServerSocket對(duì)象與服務(wù)器端套接字對(duì)象與服務(wù)器端套接字_1 _1 服務(wù)器必須建立一個(gè)服務(wù)器必須建立一個(gè)ServerSocketServerSocket對(duì)象對(duì)象,該對(duì)象通過(guò)將客該對(duì)象通過(guò)將客戶端的套接字對(duì)象和服務(wù)器端的一個(gè)套接字對(duì)象連接起來(lái),從戶端的套接字對(duì)象和服務(wù)器端的一個(gè)套接字對(duì)象連接起來(lái),從而達(dá)到連接的目的。而達(dá)到連接的目的。 建立建立ServerSocketServerSoc

9、ket對(duì)象:對(duì)象: try ServerSocket serverForClient =new ServerSocket(2010); catch(IOException e) 使用方法使用方法accept()accept()將客戶的套接字和服務(wù)器端的套接字連接將客戶的套接字和服務(wù)器端的套接字連接起來(lái),代碼如下所示起來(lái),代碼如下所示: try Socket sc= serverForClient .accept(); catch(IOException e) 所謂所謂“接收接收”客戶的套接字連接就是客戶的套接字連接就是accept()accept()方法會(huì)返回一方法會(huì)返回一個(gè)和客戶端個(gè)和客戶端

10、SocketSocket對(duì)象相連接的對(duì)象相連接的SocketSocket對(duì)象。對(duì)象。.12 頁(yè)1213.3.3 ServerSocketServerSocket對(duì)象與服務(wù)器端套接字對(duì)象與服務(wù)器端套接字_2 _2 客戶端的套接字獲得的輸入輸出流和服務(wù)器端的套接字獲得的輸出輸入流互相連接.13 頁(yè)13 例子例子3中,客戶端向服務(wù)器問(wèn)了三句話,服務(wù)器都給出了一一的回答。首先將例子3中服務(wù)器端的Server.java編譯通過(guò),并運(yùn)行起來(lái),等待客戶的呼叫,然后運(yùn)行客戶端程序??蛻舳诉\(yùn)行效果如圖13.3,服務(wù)器端運(yùn)行效果如圖13.4。 客戶端客戶端 (Client.java )服務(wù)器端服務(wù)器端 (Serv

11、er.java ).14 頁(yè)1413.3.4 使用多線程技術(shù)使用多線程技術(shù) 為了防止堵塞線程,服務(wù)器端收到一個(gè)客戶的套接字后,就為了防止堵塞線程,服務(wù)器端收到一個(gè)客戶的套接字后,就應(yīng)該啟動(dòng)一個(gè)專門為該客戶服務(wù)的線程。應(yīng)該啟動(dòng)一個(gè)專門為該客戶服務(wù)的線程。 在下面的例子在下面的例子4中,客戶使用中,客戶使用SocketSocket類不帶參數(shù)的構(gòu)造方法類不帶參數(shù)的構(gòu)造方法Socket()Socket()創(chuàng)建一個(gè)套接字對(duì)象,該對(duì)象需調(diào)用創(chuàng)建一個(gè)套接字對(duì)象,該對(duì)象需調(diào)用 public void connect(SocketAddress endpoint) throws IOExceptionpubli

12、c void connect(SocketAddress endpoint) throws IOException請(qǐng)求和參數(shù)請(qǐng)求和參數(shù)SocketAddressSocketAddress指定地址的套接字建立連接。指定地址的套接字建立連接。為了使用為了使用connectconnect方法,可以使用方法,可以使用S o c k e t A d d r e s sS o c k e t A d d r e s s 的 子 類的 子 類InetSocketAddressInetSocketAddress創(chuàng)建一個(gè)對(duì)象,創(chuàng)建一個(gè)對(duì)象,InetSocketAddressInetSocketAddress的構(gòu)

13、造方法是:的構(gòu)造方法是:InetSocketAddress(InetAddress addr, int port)InetSocketAddress(InetAddress addr, int port) .15 頁(yè)15 例子例子4中,客戶輸入圓的半徑并發(fā)送給服務(wù)器,服務(wù)器把計(jì)算出的圓的面積返回給客戶。因此可以將計(jì)算量大的工作放在服務(wù)器端,客戶負(fù)責(zé)計(jì)算量小的工作,實(shí)現(xiàn)客戶-服務(wù)器交互計(jì)算,來(lái)完成某項(xiàng)任務(wù)。首先將例子首先將例子4中服中服務(wù)器端的程序編譯通過(guò)務(wù)器端的程序編譯通過(guò),并運(yùn)行起來(lái),等待客戶的呼叫??蛻舳诉\(yùn)行效果如圖13.6,服務(wù)器端運(yùn)行效果如圖13.7。 客戶端客戶端 (Client.j

14、ava , Read.java )服務(wù)器端服務(wù)器端( (Server.java Server.java ) ) .16 頁(yè)1613.4 UDPUDP數(shù)數(shù) 據(jù)據(jù) 報(bào)報(bào) 基于基于UDPUDP的通信和基于的通信和基于TCPTCP的通信不同,基于的通信不同,基于UDPUDP的的信息傳遞更快,但不提供可靠性保證。信息傳遞更快,但不提供可靠性保證。 基于基于UDPUDP通信的基本模式是:通信的基本模式是: 1 1將數(shù)據(jù)打包將數(shù)據(jù)打包,稱為數(shù)據(jù)包(好比將信件裝入信,稱為數(shù)據(jù)包(好比將信件裝入信封一樣),然后將數(shù)據(jù)包發(fā)往目的地。封一樣),然后將數(shù)據(jù)包發(fā)往目的地。 2 2接受別人發(fā)來(lái)的數(shù)據(jù)包接受別人發(fā)來(lái)的數(shù)據(jù)包

15、(好比接收信封一樣),(好比接收信封一樣),然后查看數(shù)據(jù)包中的內(nèi)容。然后查看數(shù)據(jù)包中的內(nèi)容。 .17 頁(yè)1713.4.1 發(fā)送數(shù)據(jù)包發(fā)送數(shù)據(jù)包 1 1 . 用用 D a t a g r a m P a c k e tD a t a g r a m P a c k e t 類 將 數(shù) 據(jù) 打 包 , 即 用類 將 數(shù) 據(jù) 打 包 , 即 用DatagramPacketDatagramPacket類創(chuàng)建一個(gè)對(duì)象,稱為數(shù)據(jù)包。用類創(chuàng)建一個(gè)對(duì)象,稱為數(shù)據(jù)包。用DatagramPacketDatagramPacket的以下兩個(gè)構(gòu)造方法創(chuàng)建待發(fā)送的數(shù)據(jù)的以下兩個(gè)構(gòu)造方法創(chuàng)建待發(fā)送的數(shù)據(jù)包:包: Datag

16、ramPacket(byte data,int length,InetAddtress address,int port)DatagramPacket(byte data,int length,InetAddtress address,int port) DatagramPack(byte data,int offset,int length,InetAddtress address,int port) DatagramPack(byte data,int offset,int length,InetAddtress address,int port) 2 2用用DatagramSocketD

17、atagramSocket類的不帶參數(shù)的構(gòu)造方法:類的不帶參數(shù)的構(gòu)造方法:DatagramSocket()DatagramSocket()創(chuàng)建一個(gè)對(duì)象,該對(duì)象負(fù)責(zé)發(fā)送數(shù)據(jù)創(chuàng)建一個(gè)對(duì)象,該對(duì)象負(fù)責(zé)發(fā)送數(shù)據(jù)包。例如:包。例如: DatagramSocket mail_out=new DatagramSocket();DatagramSocket mail_out=new DatagramSocket(); mail_out.send(data_pack); mail_out.send(data_pack); .18 頁(yè)1813.4.2 接收數(shù)據(jù)包接收數(shù)據(jù)包 1 1 . 首 先 用首 先 用 D a

18、 t a g r a m S o c k e tD a t a g r a m S o c k e t 的 另 一 個(gè) 構(gòu) 造 方 法的 另 一 個(gè) 構(gòu) 造 方 法DatagramSocket(int port)DatagramSocket(int port) 創(chuàng)建一個(gè)對(duì)象創(chuàng)建一個(gè)對(duì)象, ,其中的參數(shù)必須和待其中的參數(shù)必須和待接收的數(shù)據(jù)包的端口號(hào)相同。例如,如果發(fā)送方發(fā)送的數(shù)據(jù)包的接收的數(shù)據(jù)包的端口號(hào)相同。例如,如果發(fā)送方發(fā)送的數(shù)據(jù)包的端口是端口是5666,5666,那么如下創(chuàng)建那么如下創(chuàng)建DatagramSocketDatagramSocket對(duì)象對(duì)象: DatagramSocket mai

19、l_in=new DatagramSocket(5666); DatagramSocket mail_in=new DatagramSocket(5666); 2 2. 然后然后對(duì)象對(duì)象mail_inmail_in使用方法使用方法receive(DatagramPacket pack)receive(DatagramPacket pack)接受數(shù)據(jù)接受數(shù)據(jù)包。包。3.3.用用 DatagramPackDatagramPack類的另外一個(gè)構(gòu)造方法:類的另外一個(gè)構(gòu)造方法:DatagramPack(byte DatagramPack(byte data,int length)data,int len

20、gth)創(chuàng)建一個(gè)數(shù)據(jù)包,用于接收數(shù)據(jù)包,例如創(chuàng)建一個(gè)數(shù)據(jù)包,用于接收數(shù)據(jù)包,例如: byte data=new byte100;byte data=new byte100; int length=90; int length=90; DatagramPacket pack=new DatagramPacket(data,length); DatagramPacket pack=new DatagramPacket(data,length); mail_in.receive(pack); mail_in.receive(pack); 該數(shù)據(jù)包該數(shù)據(jù)包packpack將接收長(zhǎng)度是將接收長(zhǎng)度是len

21、gthlength字節(jié)的數(shù)據(jù)放入字節(jié)的數(shù)據(jù)放入datadata。.19 頁(yè)19 例子例子5中:張山和李四使用用戶數(shù)據(jù)報(bào)(可用本地機(jī)模擬)互相發(fā)送和接收數(shù)據(jù)包,程序運(yùn)行時(shí)“張三”所在主機(jī)在命令行輸入數(shù)據(jù)發(fā)送給“李四”所在主機(jī),將接收到的數(shù)據(jù)顯示在命令行的右側(cè)(效果如圖13.8);同樣,“李四”所在主機(jī)在命令行輸入數(shù)據(jù)發(fā)送給“張三”所在主機(jī),將接收到的數(shù)據(jù)顯示在命令行的右側(cè)(效果如圖13.9)。 “張三張三”主機(jī)主機(jī) (ZhanSan.java , ReceiveLetterForZhang.java )“李四李四”主機(jī)主機(jī) (LiSi.java , ReceiveLetterForLi.java

22、 ).20 頁(yè)2013.5 廣播數(shù)據(jù)報(bào)廣播數(shù)據(jù)報(bào) 廣播數(shù)據(jù)報(bào)涉及到地址和端口。廣播數(shù)據(jù)報(bào)涉及到地址和端口。 廣播數(shù)據(jù)報(bào)是一種較新的技術(shù),要廣播或接收廣播的主機(jī)都必須加入到同廣播數(shù)據(jù)報(bào)是一種較新的技術(shù),要廣播或接收廣播的主機(jī)都必須加入到同一個(gè)一個(gè)D D類地址。類地址。 廣播端廣播端 (BroadCast.java ) 例子例子6 6中,一個(gè)主機(jī)不斷地重復(fù)廣播放假通知中,一個(gè)主機(jī)不斷地重復(fù)廣播放假通知, ,加入到同一組的主機(jī)都可加入到同一組的主機(jī)都可以隨時(shí)接收廣播的信息以隨時(shí)接收廣播的信息. . 接收端接收端 (Receiver.java ).21 頁(yè)2113.6 Java Java 遠(yuǎn)程調(diào)用(遠(yuǎn)

23、程調(diào)用(RMIRMI) JavaJava遠(yuǎn)程調(diào)用,遠(yuǎn)程調(diào)用,RMIRMI(Remote Method InvocationRemote Method Invocation)是是一種分布式技術(shù),使用一種分布式技術(shù),使用RMIRMI可以讓一個(gè)虛擬機(jī)可以讓一個(gè)虛擬機(jī)( (JVM)JVM)上上的應(yīng)用程序請(qǐng)求調(diào)用位于網(wǎng)絡(luò)上另一處的的應(yīng)用程序請(qǐng)求調(diào)用位于網(wǎng)絡(luò)上另一處的JVMJVM上的對(duì)上的對(duì)象方法。習(xí)慣上稱發(fā)出調(diào)用請(qǐng)求的虛擬機(jī)(象方法。習(xí)慣上稱發(fā)出調(diào)用請(qǐng)求的虛擬機(jī)(JVMJVM)為為(本地)客戶機(jī),稱接受并執(zhí)行請(qǐng)求的虛擬機(jī)(本地)客戶機(jī),稱接受并執(zhí)行請(qǐng)求的虛擬機(jī)(JVMJVM)為(遠(yuǎn)程)服務(wù)器。為(遠(yuǎn)程)

24、服務(wù)器。 .22 頁(yè)2213.6.1 遠(yuǎn)程對(duì)象及其代理遠(yuǎn)程對(duì)象及其代理 1.1.遠(yuǎn)程對(duì)象遠(yuǎn)程對(duì)象: :駐留在(遠(yuǎn)程)服務(wù)器上的對(duì)象是客戶要請(qǐng)求的對(duì)象,稱作遠(yuǎn)駐留在(遠(yuǎn)程)服務(wù)器上的對(duì)象是客戶要請(qǐng)求的對(duì)象,稱作遠(yuǎn)程對(duì)象。程對(duì)象。 2 2代理與存根代理與存根( (Stub)Stub): : 代理的特點(diǎn)是它與遠(yuǎn)程對(duì)象實(shí)現(xiàn)了相同的接口。代理的特點(diǎn)是它與遠(yuǎn)程對(duì)象實(shí)現(xiàn)了相同的接口。 存根(存根(StubStub):):一種特殊的字節(jié)碼,并讓這個(gè)存根產(chǎn)生的對(duì)象為作為遠(yuǎn)程一種特殊的字節(jié)碼,并讓這個(gè)存根產(chǎn)生的對(duì)象為作為遠(yuǎn)程對(duì)象的代理。對(duì)象的代理。 3Remote接口接口 RMI為了標(biāo)識(shí)一個(gè)對(duì)象是遠(yuǎn)程對(duì)象,即可以

25、被客戶請(qǐng)求的對(duì)象,要求遠(yuǎn)程為了標(biāo)識(shí)一個(gè)對(duì)象是遠(yuǎn)程對(duì)象,即可以被客戶請(qǐng)求的對(duì)象,要求遠(yuǎn)程對(duì)象必須實(shí)現(xiàn)對(duì)象必須實(shí)現(xiàn)java.rmi包中的包中的Remote接口,也就是說(shuō)只有實(shí)現(xiàn)該接口的類的接口,也就是說(shuō)只有實(shí)現(xiàn)該接口的類的實(shí)例才被實(shí)例才被RMI認(rèn)為是一個(gè)遠(yuǎn)程對(duì)象。認(rèn)為是一個(gè)遠(yuǎn)程對(duì)象。.23 頁(yè)2313.6.2 RMIRMI的設(shè)計(jì)細(xì)節(jié)的設(shè)計(jì)細(xì)節(jié) 1 1擴(kuò)展擴(kuò)展RemoteRemote接口接口 定義一個(gè)接口是定義一個(gè)接口是java.rmijava.rmi包中包中RemoteRemote的子接口,即擴(kuò)展的子接口,即擴(kuò)展RemoteRemote接口。接口。 RemoteSubject.java Remot

26、eSubject.java 2 2遠(yuǎn)程對(duì)象遠(yuǎn)程對(duì)象 創(chuàng)建遠(yuǎn)程對(duì)象的類必須要實(shí)現(xiàn)創(chuàng)建遠(yuǎn)程對(duì)象的類必須要實(shí)現(xiàn)RemoteRemote接口,接口,RMIRMI使用使用RemoteRemote接口來(lái)標(biāo)識(shí)遠(yuǎn)接口來(lái)標(biāo)識(shí)遠(yuǎn)程對(duì)象,但是程對(duì)象,但是RemoteRemote中沒有方法,因此創(chuàng)建遠(yuǎn)程對(duì)象的類需要實(shí)現(xiàn)中沒有方法,因此創(chuàng)建遠(yuǎn)程對(duì)象的類需要實(shí)現(xiàn)RemoteRemote接接口的一個(gè)子接口??诘囊粋€(gè)子接口。RemoteConcreteSubject.javaRemoteConcreteSubject.java 3 3存根(存根(StubStub)與代理與代理: :RMIRMI使用使用rmicrmic命令生成存根命令生成存根 RemoteConcreteSubject_Stub.classRemoteConcreteSubject_Stub.class 4 4啟動(dòng)注冊(cè)啟動(dòng)注

溫馨提示

  • 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論