




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、湖南工業(yè)大學(xué)課程設(shè)計資料袋計算機與通信學(xué)院 學(xué)院(系、部)20132014 學(xué)年第 i 學(xué)期課程名稱網(wǎng)絡(luò)協(xié)議分析指導(dǎo)教師李建設(shè) 職稱 副教授學(xué)生姓名專業(yè)班級學(xué)號題 n j:udp協(xié)議網(wǎng)上聊犬程序成 績起止日期 2013 年11刀25 li2013年12刀13 li目錄清單序號材料名稱資料數(shù)星備 ';!:1課程設(shè)計任務(wù)書2課程設(shè)計說明書3456課程設(shè)計任務(wù)書2013 2014學(xué)年第1學(xué)期學(xué)院(系、部)計算機與通信學(xué)院專業(yè)網(wǎng)絡(luò)工程班級 102課程名稱:網(wǎng)絡(luò)工程學(xué)生姓名:設(shè)計題:基于udp協(xié)議網(wǎng)上聊天程序 指導(dǎo)教師:李建設(shè)完成期限:自2013 年 11月 25 h至一 2013 年 12 月
2、13 h 共3 周內(nèi)容及任務(wù)容于ab具務(wù)明屣州絢求蚱譏保 內(nèi)基 多端任說妁對盹要能設(shè)軟 計個 持戶計計仏且$ffi計功稈色 設(shè)一 支客設(shè)就潯朋一設(shè)按課綠 、al )z 、一、歲 1 2二課z7的竽三1 2 3八進度安排試 測 統(tǒng) 系主 要 參 考 資 料1 亠 1指導(dǎo)教師(簽字): 年 月 u系(教研室)主任(簽字): 年 月 ij課程設(shè)計說明書課程名稱:設(shè)計題目:網(wǎng)絡(luò)協(xié)議分析基于udp協(xié)議網(wǎng)上聊天程序?qū)?業(yè):班級:學(xué)生姓名:學(xué)號:指導(dǎo)教師:李建設(shè)2013年12月13日目錄1課程設(shè)計簡介41.1課程設(shè)計的目的41.2課程設(shè)計內(nèi)容42課程設(shè)計實現(xiàn)過程52.1協(xié)議原理52.2客戶機/服務(wù)器模式72
3、.3關(guān)鍵技術(shù)82.4流程圖102.5系統(tǒng)結(jié)構(gòu)圖ii2.6程序調(diào)試及界面效果圖112.7源代碼153設(shè)計總結(jié)224參考文獻231課程設(shè)計簡介1.1課程設(shè)計的目的開發(fā)一個專用于實現(xiàn)兩臺計算機z間即時通訊的軟件,以方便兩臺或兩臺以 上的計算機z間信息的交流。,在連接并通信時,尤其是近程的即時通訊,徹底 的脫離了遠程的服務(wù)器,避免了和遠程服務(wù)器連接時過多的浪費網(wǎng)絡(luò)資源。并且 避免了服務(wù)器忙或與服務(wù)器無法連接時,浪費過多時間用于和服務(wù)器建立連接! 因此,這個軟件是極具適應(yīng)性和實用性的即時通訊軟件!本次課程設(shè)計的目的是 學(xué)習(xí)基于udp協(xié)議實現(xiàn)網(wǎng)絡(luò)聊天程序,已達到學(xué)會而向無連接方式的程序設(shè)計方 法,并理解網(wǎng)
4、絡(luò)編程中而向無連接的概念。1.2課程設(shè)計內(nèi)容1. 實現(xiàn)一個基于udp協(xié)議的簡單的聊天程序,包括服務(wù)器和客戶端。2. 支持多人聊天。3. 客戶端具冇圖形化用戶界面。2課程設(shè)計實現(xiàn)過程2.1協(xié)議原理udp辦議的全稱是用戶數(shù)據(jù)報辦議,在網(wǎng)絡(luò)中它與tcp協(xié)議一樣用丁處 理數(shù)據(jù)包,是一種無連接的血議。在0s1模型屮,在第四層傳輸層,處于 ip協(xié)議的上一層。u)p有不提供數(shù)據(jù)包分組、組裝和不能對數(shù)據(jù)包進行排序的缺 點,也就是說,當(dāng)報文發(fā)送z后,是無法得知其是否安全完整到達的。udp用來 支持那些需要在計算機z間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會議系統(tǒng)在內(nèi)的 眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需耍使用udp
5、協(xié)議。udp協(xié)議從問世至今 已經(jīng)被使用了很多年,雖然英最初的光彩已經(jīng)被一些類似i辦議所掩蓋,但是即使 是在今天udp仍然不失為一項非常實用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。udp是osi參考模型中一種無連接的傳輸層協(xié)議,它主要用于不要求分 組順序到達的傳輸屮,分組傳輸順序的檢查與排序由應(yīng)用層完成,捉供而向事務(wù) 的簡單不可靠信息傳送服務(wù)。ldp |辦議基本上是ip i辦議與上層i辦議的接口。udp 協(xié)議適用端口分別運行在同一臺設(shè)備上的多個應(yīng)用程序。與所熟知的tcp (傳輸控制i辦議)協(xié)議一樣,udpi辦議直接位于ip (網(wǎng) 際協(xié)議)協(xié)議的頂層。根據(jù)osi (開放系統(tǒng)互連)參考模型,udp和tcp都屬于 傳
6、輸層協(xié)議。udp辦議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)包的形式。一個與型 的數(shù)據(jù)包就是一個二進制數(shù)據(jù)的傳輸單位。每一個數(shù)據(jù)包的前8個字節(jié)用來包含 報頭信息,剩余字節(jié)則用來包含具體的傳輸數(shù)據(jù)。udp是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接(當(dāng)然發(fā)送數(shù)據(jù)結(jié)束 時也沒冇連接可釋放)因此減少了開銷和發(fā)送數(shù)據(jù)z前的時延。udp使用的是盡最大努力交付,即不保證可靠交付,因此主機不需要維 持復(fù)雜的連接狀態(tài)表。udp是而向報文的。發(fā)送方的udp對應(yīng)程序交下來的報文,在添加首部 后就向下交付給ip層。udp對應(yīng)用層交下來的報文,既不合并,也不拆分,而 是保留這些報文的邊界。udp是定義用來在互連網(wǎng)絡(luò)環(huán)境中捉供
7、數(shù)據(jù)報交換的計算機通信的協(xié) 議。此協(xié)議默認是ip下層協(xié)議。此協(xié)議提供了向另-用戶程序發(fā)送信息的最簡 便的血議機制,不需要連接確認和保護復(fù)制,所以在軟件實現(xiàn)上比較簡單,需耍 的內(nèi)存空間比起tcp相對較小。udp包頭由4個域組成,其中每個域齊占用2個字節(jié)。(1)源端口號(16位人udp數(shù)據(jù)包的發(fā)送方使用的端口號。(2)目標(biāo)端口號(16位):udp數(shù)據(jù)包的接收方使用的端口號。udp協(xié)議 使用端口號為不同的應(yīng)用保留其各自的數(shù)據(jù)傳輸通道。udp和說p協(xié)議正是采用 這一機制,實現(xiàn)對同一時刻內(nèi)多項應(yīng)用同時發(fā)送和接收數(shù)據(jù)的支持。(3)數(shù)據(jù)報長度(16位)。數(shù)據(jù)報的長度是指包括報頭和數(shù)據(jù)部分在內(nèi)的 總的字節(jié)數(shù)。
8、理論上,包含報頭在內(nèi)的數(shù)據(jù)包的最大長度為65535字節(jié)。不過, 一些實際應(yīng)用往往會限制數(shù)據(jù)包的大小,有時會降低到8192字節(jié)。(4)校驗值(16位)。udp協(xié)議使用包頭中的校驗值來保證數(shù)據(jù)的安全。2.2客戶機/服務(wù)器模式由于這次課程設(shè)計是實現(xiàn)點到點的可靠連接,所以在此使用udp連接方式。 在這個連接屮,雙方分為客戶和服務(wù)器,他們各自的功能不同。客戶機一方,udp應(yīng)用程序功能如下:(1)打開通信信道(巾請一套接字),并連接到服務(wù)器在主機的保留端口, 該端口對應(yīng)服務(wù)器的udp進程。(2)向服務(wù)器發(fā)出請求報文,等待接收應(yīng)答。(3)從服務(wù)器方收到最終應(yīng)答結(jié)果,或在不再請求時關(guān)閉信道并終止客戶 機進程。
9、服務(wù)器一方,udp應(yīng)用程序動作如門(1) 打開通信信道(屮請一套接字),通知木地主機在某一保留端口接收 客戶機請求。(2) 等待客戶請求到達指定端口。(3) 接收到請求,啟動一新進程處理用戶請求,同時釋放iii進程以響應(yīng)新 的客戶請求,一旦服務(wù)完成,關(guān)閉新進程與客戶的通信鏈路。(4) 繼續(xù)等待客戶機請求。(5) 如果不想響應(yīng)客戶機請求,關(guān)閉服務(wù)器進程。2. 3關(guān)鍵技術(shù)socket又稱作套接字,它是使用標(biāo)準(zhǔn)unix文件描述 符(file descriptor)和其它程序通訊的方式。使用send()和recv()讓你更好 的控制數(shù)據(jù)傳輸。在java網(wǎng)絡(luò)編程中,socket相當(dāng)于應(yīng)用程序的港口碼頭;
10、在 計算機網(wǎng)絡(luò)中,套接字由ip地址和端口號組成,為進程之間通信提供地址。兩 個主機進行通信實際上就是兩個主機中的應(yīng)用進程互相通信,應(yīng)用進程之間的通 信又稱為端到端的通信。為應(yīng)用進程之間的通信提供運輸服務(wù)的是運輸層的運輸 協(xié)議,運輸層需耍有兩種不同的運輸協(xié)議,即面向連接的tcp和無連接的udp。在java中,用于實現(xiàn)基于udp的聊天程序,使用兩個重要的類(datagramsocket 類和 datagrampacket 類)。datagramsocket 類表示用來發(fā)送 和接收數(shù)據(jù)報包的套接字。數(shù)據(jù)報套接字是包投遞服務(wù)的發(fā)送或接收點。每個在 數(shù)據(jù)報套接字上發(fā)送或接收的包都是單獨編址和路由的。從一
11、臺機器發(fā)送到另一 臺機器的多個包可能選擇不同的路由,也可能按不同的順序到達。在 datagramsocket上總是啟用udp廣播發(fā)送。為了接收廣播包,應(yīng)該將 datagramsocket綁定到通配符地址。在某些實現(xiàn)中,將datagramsocket綁定到 一個更加具體的地址時廣播包也可以被接收。datagrampacket類表示數(shù)據(jù)報包。 數(shù)據(jù)報包用來實現(xiàn)無連接包投遞服務(wù)。每條報文僅根據(jù)該包中包含的信息從一臺 機器路由到另一臺機器。從一臺機器發(fā)送到另一臺機器的多個包可能選擇不同的 路曲,也可能按不同的順序到達。不對包投遞做出保證。服務(wù)程序工作在服務(wù)器 的某個端口上,一旦啟動服務(wù),它將在這個端口
12、上監(jiān)聽,等待客戶程序發(fā)來請求, 當(dāng)有客戶連接到該端口,accept ()方法就返回一個socket對象,可以用該對 象獲得一個輸入輸出流。服務(wù)器的套接字用服務(wù)器套接字類(serversocket)來 建立。具體實現(xiàn)如下:(1) 建立一個服務(wù)者,端口為6666o(2) 服務(wù)者永遠等待,一旦客戶送來正確的請求,連接至該端口,acccpt () 方法就返回一個socket對象。(3) 用返冋的socket對象創(chuàng)建數(shù)據(jù)輸入流類的實例6666o用返冋的socket 對象創(chuàng)建數(shù)據(jù)輸出流的實例8888o以上實例in和out是服務(wù)者用于從客戶接受輸入信息和向客戶程序發(fā)送信 息所用。此外,還需要用方法recei
13、ve ()和printin ()讀取或輸出一行數(shù)據(jù)。(4) 在客戶端建立sockct對象,并進行異常處理,主機名和端口號與連接 的服務(wù)器名和提供該服務(wù)的服務(wù)程序的監(jiān)聽端口必須一致。建立連接后用socket 類提供的datagramsocket ()和datagrampacket ()方法取得輸入輸出流。在 服務(wù)器端,獲得的輸入流是客戶端的輸出流,而socket獲得的輸出流是發(fā)向客 戶端的輸入流,在客戶端也是這樣。獲得socket的輸入輸出流z后,為了便于 讀坊操作,需要在這兩個流對象基礎(chǔ)上建立易于操作的數(shù)據(jù)流dcitcigramsocket, datagrampacketo然后對輸入輸出流進彳
14、亍讀寫操作。在通信結(jié)束時關(guān)閉socket, 以斷開連接,釋放資源。先關(guān)閉對應(yīng)的輸入輸出流,再關(guān)閉socket本身。2.4流程圖服務(wù)器端2.5系統(tǒng)結(jié)構(gòu)圖2. 6程序調(diào)試及界面效果圖2.6.1調(diào)試前的準(zhǔn)備安裝jdkl.6.0并在計算機的環(huán)境變量中配置好java環(huán)境。使用的實驗環(huán)境是 windows xp, eclipse 6.0,o使用3太主機進行通信,一臺作為服務(wù)器,另外兩臺 作為客戶端。2. 6. 2程序調(diào)試過程啟動eclipse首先在一臺主機上運行服務(wù)器端程序,再在另外兩臺機器上運 行客戶端程序。然后進入到用戶的圖形用戶界而,輸入客戶端的1p,進行連接, 如果連接成功,則客戶端就可以通過與服
15、務(wù)器端進行通信,然后服務(wù)器轉(zhuǎn)發(fā)通信, 實現(xiàn)了兩個客戶端之間的聊天功能。2. 6. 3程序運行結(jié)果文*1)*kw«) 144(1)«kqi)”® ««)«a«)«»«) in° 口 iv javan9 &蘆八9 jb cut/r«m.0l ® ia d.qaw j«vt * ”】cmwri je 出 xd sww)wi ju »<jk 仙 6 0j6j"pockace chatfrm.ol.*iaport jeva.ntt.
16、datacrmpacktt public class strvtr lift ipi “ arreylift (> datmtmockttdat mi jacketdat mtasocket dm wpadtetfocket. packet;ftocktt. tpackrt.public server<) throve exception ( fock«t mv data<raasock«t (6666): ”xkqf dat a<rt*sock*t (8888).chttrrm jmn: £ &入)明k g. s«rv&
17、#171;ra i八 utt i««ke< a pxhha i ticket d«t4c>,« a iacktl d«(<cr« “ s«rv»r 0 lhuno 1 «un(s<rim()public void lift«n() throve exceptio«i ( byt«( array ” byte(100.packet new da<rarray1 n<qh); roeket sectivt (packet),byt ( dat
18、a*pbektt. (etdat ().stnn< received new strin<(dbta,09data, length *utf 8*). syrtovf.print in (received)strin<() 98 reetived. rplit (*|*>rutf-r>;rr&cket xendlrpacktf)public «tatic void naincstnnc arcs) thrown exception ( strvwr 9 = nw s«rv«r().vhile (true) s. lifttno
19、;j ,h* j.vutr m明 ofiwti w6«.<201>12-t 下午03 1610)192. im. 3.78 192. im. 1.78 192. im. 1.78 192.168 168192.168.1.68192.168.3.68192. in. 1.78192.168.1.68package chatfrajne_01:iaport java, jlo * :匚public class chatapp boolean packframe = false:chat app () chat frame f raae = ne> chatframe
20、(): if (packframe) frame pack (): else frame, validate();/放置窗體在屏幕中央 di>ension screensize = to« diaension fraaesize = fraj if (framesize.height > sc framesize. height = sc:if (frantesize.width > scr framesize. width = sen frame setlocation(screen: (screensize heigh* frame setvisible (tr
21、ue); framewaitforpackets ():public static void main (st r chat app ():輸入対方ip地址:192.168/1.78輸入誦口發(fā)送信輸出端口 : 3001to 192. 168. 1.7& 3000 s&v:發(fā)生to 192.168.1.78:3000 say:發(fā)生.from /192. 168. 1 77:8888 get:大范甘迪的 to 192. 168. 1.78:3000 say:你好from /192 168.1.77:8888 g«t:uioiiofoih to 192.168.1.78:3
22、000 say:發(fā)生 to 192.168.1.78:3000 say:發(fā)生 to 192.168.1 78:3000 say:而fr<xn /192.168.1.77:8888 get:解開后 i hi oho fro<n /192. 168. 1.77:8888 get:hhiohio to 192. 168. 13000 say:發(fā)生 to 192.168.1.78:3000 say:衛(wèi)夫人 to 192. 168. 1 78:3000 say:額問題 fro<n /192. 168. 1.77:8888 驢t:好ihio to 192.168.1.78:3000 sa
23、y:發(fā)生 to 192. 168. 1.78:3000 say:個入 to 192.168.1.78:3000 say:分為 from /192. 168.1.77:8888 “t: 12313 fron /192. 168. 1 77:8888 yt:隹紅iohio £ro<n "92. 168. 1.77:8888 驢t:方法減肥 from /192 168. 1 77:8888 “t:曇雨 from /192.168.1.77:8888 學(xué)t:曾/l志 from /192.168.1.77:8888 "t 賈光明from /192. 168. 1.77
24、:8888 get:伍禿|ljisy / w spy, £r*v 9,miz 皿喬 g, knm3uq»i »i»rj:2 參 oq 噂曲' g i宀; i 二 八廠包貴憑皆理劈必、層次結(jié)構(gòu) ° b 丨沁3 projiect二:出 chatfrsnejol由迎 ch&tapp. j ava® -7) chatfr»e. javae ;j server, jaiva壬系統(tǒng)庫jdkl 6.0j8chatfram. java2. 7源代碼package chatframe_01; import j .*;impor
25、t j ava.io.*;import j ava.awt*;import j ava awtevent.*;import j avax.swing.*;import j ava <lang e*;import j avaawtcolor.*; import j avax.swing joptionpane;public class chatframe extends jframe jpanel contentpane;jlabel labell = new jlabel () ; / 發(fā)送消息jlabel label2 = new jlabel () ; / 輸入iplabel lab
26、el3 = new label () ; / 輸入端 口標(biāo)簽label label4 = new lab el () ; / 輸出端口標(biāo)簽jtextfieldtextfieldl=newjtextfield();/發(fā)送消息jtextfieldtextfield2=newjtextfield();/輸入生jtextfieldtextfield3=newjtextfield();/獲得輸入端口jtextfieldtextfield4=newjtextfield();/獲得輸出端口jbutton buttonl = new jbutton (”發(fā)送");/ 發(fā)送消息textarea tex
27、tareal = new textarea ();joptionpane jopane = new joptionpane ();datagrampacket sendpacket, receivepacket ; / 聲明發(fā)送和接收數(shù)據(jù)包datagramsocket sendsocket, receivesocket;/ 聲 明發(fā)送 和接 收 datagramsocketpublic chatframe() enableevents (awtevent. window_event_mask); try tolnit(); catch (exception e) e.printstacktra
28、ce();private void tolnit() throws exception contentpane = (jpanel) this.getcontentpane(); labell. settext (”發(fā)送信息:");labell.setbounds(new rectangle(13, 100, 60, 21); contentpane.setlayout(null);contentpanesetbackground(color.pink);thissetsize(new dimension(363, 502); this . settitle ("多人聊天室
29、”);label2 . settext ( ”輸入對方:tp地如::");label2.setbounds(new rectangle(12, 19, 109, 23);label3 . settext (aiifij i1:");label3.setbounds(new rectangle(12, 58 z 55, 22); label4 . settext ("li :");label4.setbounds(new rectangle(180, 58 z 55, 22); textfield3.settext("3000");te
30、xtfield4.settext("3001");buttonl.setbounds(new rectangle(280, 100, 59, 21); buttonladdactionlistener(newj avaawt.event.actionlistener()public void actionperformed(actionevent e)buttonl actionperformed(e););textfieldladdkeylistener(new keyadapter() publie void keypressed(keyevent e) if (e.g
31、etkeycode() = keyevent.vk_enter) string str = textfield2.gettext();string strl=textfieldl.gettext();if (str. compareto (n 11)! = 0&&! equals (strl) )try textarealtextfield2.gettext()+ n : n + "3000n + n say: h+ textfieldl.gettext();string s = textfieldlgettext(); byte data = s.getbytes(
32、"utf-8"); sendpacket = new datagrampacket(data; datalength,inetaddress getbyname (11192.168.1.77h) z6666);sendsocket.send(sendpacket); catch (ioexception exc) excprintstacktrace(););textfield4.setbounds(new textfield3setbounds(new textfield2.setbounds(new textfieldl setbounds(newtextfieldl
33、. settext ( n 11);rectangle(240, 58, 90, 22); rectangle(70, 58 z 90, 22); rectangle(123z 20, 120z 19); rectang:l0(76, 100z 190, 19);textareal.setbounds(new rectangle(11, 140, 333 z 315); textarealseteditable(false); textarealsetbackground(color.white);contentpane.add(label4, contentpane.add(label3 z
34、 contentpane.add(label2, contentpaneadd(labell,null); null); null); null);contentpane.add(textfieldl, null); contentpane.add(textfield2, null); contentpane.add(textfield3, null); contentpane.add(textfield4 z null); contentpane.add(textarealz null);contentpane.add(buttonl, null); this.setvisible(true
35、);bind();protected void processwindowevent(windowevent e) super processwindowev巳nt(e);if (e.get1d() = windowevent.window_closing) system.exit(0);public void waitforpackets () /檢測并接受對方發(fā)來的消息while (true) try byte array = new byte100;receivepacket二newdatagrampacket(array,array.length);receivesocketrecei
36、ve(receivepacket);/ 接4攵textareal.append(hnfrom n + receivepacket.getaddress()+ h :"+ receivepacketgetport () + n get:n);string received = new string(receivepacket.getdata ()z 0,receivepacketgetlength(), nutf-8n);textareal.append(received); catch (ioexception se) se.printstacktrace();void bind (
37、) /和對方建立連try sendsocket = new datagramsocket(3000); receivesocket = new datagramsocket(3333); catch (exception e) void buttonl_actionperformed (actionevent e) / 發(fā)送消息至収寸方string str = textfield2.gettext();string strl = textfiezldl.gettextz ();if (pareto("")!= 0&&equals(strl)try texta
38、real.append(hnto u + textfield2.gettext() + n:n + ”3000”+ " say: n + textfieldl.gettext();strings=textfield2 .gettext () + ' | "+textfieldl.gettext ();byte data = s.getbytes("utf-8");sendpacket = new datagrampacket(data, data.length, inetaddressgetbyname("192.168.1.77&qu
39、ot;), 6666);sendsocket.send(sendpacket); catch (ioexception exc) exc.printstacktrace();textfieldl.settext(n n);chatapp. javapackage chatframc_01;import java.io.*;import javax.swing.uimanager;import java.awt.*;public class chatapp boolean packframe = false;chatappo chatframe frame = new chatframe();i
40、f (packframe) frame.pack(); else frame.validate();1/放置窗體在屏幕中央dimension screensize = toolkit.getdefaulttoolkit().getscreensize();dimension framesize = frame.getsize();if (framesize.height > screensize.height) framesize.height = screensize.height;if (framesize.width > screensize.width) framesize
41、.width = screensize.width;framc.sctl(xation(scrccnsizc.width - framesize.width) / 2,(screensize.height - framesize.height) / 2);frame.setvisible(true);frame.waitforpackets();public static void main(string args) new chatappo;server javapackage chatframe_01;import j .datagrampacket;import j avanetdata
42、gramsocket; import j inetaddress; import j avanetsocket;import j ava.util.*; publie class server list ips = new arraylist();datagramsocket socket;datagrampacket packet;datagramsocket ssocket;datagrampacket spacket;public server() throws exception socket = new datagramsocket(6666); ssocket=new datagramsocket(8888);public void listen() throws exception byte array = new byte100;packet = new datagrampacket(array, array.length); socket.receive(packet);byte data=packet.getdata();string received = new string(data,0,data.length,nutf-8n); system.outprintin(receive
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 密歇根大學(xué)生創(chuàng)業(yè)大賽
- 專業(yè)融資擔(dān)保合同范例
- 供貨傭金合同范例
- 企業(yè)項目合作合同范例
- 個人車主租車合同范例
- 肩關(guān)節(jié)鏡相關(guān)知識
- 付模具費合同范本
- 腰椎結(jié)核??浦R
- 肺活檢病理分享
- 藝術(shù)領(lǐng)域的學(xué)術(shù)探索
- 2023年陜西高職單招考試語文真題
- 石油焦生產(chǎn)工藝及設(shè)備解讀課件
- 肺炎-疑難病例討論課件
- 2023全國高中化學(xué)奧林匹克競賽預(yù)賽試題及答案
- 音樂劇悲慘世界歌詞
- 復(fù)合材料鋪層設(shè)計說明
- 戴德梁行物業(yè)培訓(xùn)ppt課件
- GB∕T 16422.3-2022 塑料 實驗室光源暴露試驗方法 第3部分:熒光紫外燈
- 煤礦防治水中長期規(guī)劃2017—2019
- 2022年鄉(xiāng)鎮(zhèn)(街道)執(zhí)法人員資格考試題庫(含答案)
- 新版廣西大學(xué)畢業(yè)設(shè)計封面
評論
0/150
提交評論