影音先锋男人资源在线观看,精品国产日韩亚洲一区91,中文字幕日韩国产,2018av男人天堂,青青伊人精品,久久久久久久综合日本亚洲,国产日韩欧美一区二区三区在线

java課程設(shè)計局域網(wǎng)的聊天和文件傳輸

上傳人:仙*** 文檔編號:27677113 上傳時間:2021-08-19 格式:DOC 頁數(shù):30 大?。?77.51KB
收藏 版權(quán)申訴 舉報 下載
java課程設(shè)計局域網(wǎng)的聊天和文件傳輸_第1頁
第1頁 / 共30頁
java課程設(shè)計局域網(wǎng)的聊天和文件傳輸_第2頁
第2頁 / 共30頁
java課程設(shè)計局域網(wǎng)的聊天和文件傳輸_第3頁
第3頁 / 共30頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《java課程設(shè)計局域網(wǎng)的聊天和文件傳輸》由會員分享,可在線閱讀,更多相關(guān)《java課程設(shè)計局域網(wǎng)的聊天和文件傳輸(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、目 錄 1 前言 1 2 需求分析 1 2.1 任務(wù)和要求 1 2.2 運行環(huán)境 1 2.3 開發(fā)工具 1 3 分析和設(shè)計 1 3.1 系統(tǒng)分析及設(shè)計思路 1 3.2 主要類圖 1 3.3 系統(tǒng)流程 7 4 具體代碼實現(xiàn) 8 5 課程設(shè)計總結(jié) 25 5.1 程序運行結(jié)果或預(yù)期運行結(jié)果 25 5.2 設(shè)計結(jié)論 27 參考文獻(xiàn) 27 致 謝 29 1 前言 編寫一個程序來模擬實現(xiàn)局域網(wǎng)的聊天和文件傳輸,通過編寫一個文件服務(wù)器程序和一個聊天服務(wù)器程序來監(jiān)聽文件的發(fā)送和聊天,當(dāng)有文件傳輸或聊天事件發(fā)生時,如果同意事件的進(jìn)行,則通過輸入流、輸出流對文件或聊天信息

2、進(jìn)行傳送,那么接收的,如果是文件就選擇保存路徑保存,如果是聊天信息就再聊天對話框的信息顯示欄里顯示,當(dāng)有一方終止連接,能告知對方,整個事件結(jié)束。 2 需求分析 2.1 任務(wù)和要求 編寫一個程序來實現(xiàn)局域網(wǎng)的聊天和文件傳輸,具體要求如下: (1)具有一個較好的可視化界面,大體做到美觀、大方。 (2)能進(jìn)行聊天和文件傳輸,在傳送文件時,接收方要有選擇接不接收的權(quán)力。 (3)在聊天時,如果沒有和對方連接成功,信息發(fā)送框為不可編輯狀態(tài)。 (4)當(dāng)在成員列表中雙擊某個成員時,系統(tǒng)自動和對方連接。 (5)連接成功,就能正常聊天,且聊天時不能發(fā)送空信息。 (6)在一方主動終止連接時,要及時

3、通知對方,提示“對方已終止連接!”。 2.2 運行環(huán)境 (1)WINDOWS2000/XP系統(tǒng) (2) editplus 或eclipse 2.3 開發(fā)工具 Java 3 分析和設(shè)計 3.1 系統(tǒng)分析及設(shè)計思路 3.1.1系統(tǒng)的理論基礎(chǔ) (1)TCP/IP協(xié)議 網(wǎng)絡(luò)編程中兩個主要的問題,一個是如何準(zhǔn)確的定位網(wǎng)絡(luò)上一臺或多臺主機,另一個就是找到主機后如何可靠高效的進(jìn)行數(shù)據(jù)傳輸。 在TCP/IP協(xié)議中IP層主要負(fù)責(zé)網(wǎng)絡(luò)主機的定位,數(shù)據(jù)傳輸?shù)穆酚?,由IP地址可以唯一地確定Internet上的一臺主機。 而TCP層則提供面向應(yīng)用的可靠(tcp)的或非可靠(UDP)的數(shù)據(jù)傳輸機

4、制,這是網(wǎng)絡(luò)編程的主要對象,一般不需要關(guān)心IP層是如何處理數(shù)據(jù)的。 目前較為流行的網(wǎng)絡(luò)編程模型是客戶機/服務(wù)器(C/S)結(jié)構(gòu)。即通信雙方一方作為服務(wù)器等待客戶提出請求并予以響應(yīng)??蛻魟t在需要服務(wù)時向服務(wù)器提 出申請。服務(wù)器一般作為守護(hù)進(jìn)程始終運行,監(jiān)聽網(wǎng)絡(luò)端口,一旦有客戶請求,就會啟動一個服務(wù)進(jìn)程來響應(yīng)該客戶,同時自己繼續(xù)監(jiān)聽服務(wù)端口,使后來的客戶也 能及時得到服務(wù)。 (2)基于Socket的java網(wǎng)絡(luò)編程 Socket所支持的協(xié)議種類也不光TCP/IP一種,因此兩者之間是沒有必然聯(lián)系的。在Java環(huán)境下,Socket編程主要是指基于TCP/IP協(xié)議的網(wǎng)絡(luò)編程。 Server端Lis

5、ten(監(jiān)聽)某個端口是否有連接請求,Client端向Server 端發(fā)出Connect(連接)請求,Server端向Client端發(fā)回Accept(接受)消息。一個連接就建立起來了。Server端和Client 端都可以通過Send,Write等方法與對方通信。 對于一個功能齊全的Socket,都要包含以下基本結(jié)構(gòu),其工作過程包含以下四個基本的步驟: ① 創(chuàng)建Socket; ② 打開連接到Socket的輸入/出流; ③ 按照一定的協(xié)議對Socket進(jìn)行讀/寫操作; ④ 關(guān)閉Socket.(在實際應(yīng)用中,并未使用到顯示的close,雖然很多文章都推薦如此,不過在我的程序中,可能因為程

6、序本身比較簡單,要求不高,所以并未造成什么影響。) 3.1.2系統(tǒng)的設(shè)計 本系統(tǒng)大體由對話框模塊、文件服務(wù)器模塊、聊天服務(wù)器模塊、文件發(fā)送模塊、文件接收模塊、聊天信息發(fā)送模塊、聊天信息接收的模塊、信息打印顯示模塊、文件 選擇模塊、成員列表裝載模塊等。下面列出部分設(shè)計: (1)文件發(fā)送服務(wù)器的設(shè)計 文件服務(wù)器是用來監(jiān)聽是否要傳遞文件,如果連接成功,有文件發(fā)送則創(chuàng)建一個功能齊全的Socket來傳遞文件,主要的代碼為: class FileServer extends Thread{ public void run(){ try{ ServerSocket MySe

7、rver = new ServerSocket(4331); while(true){ Socket si = MyServer.accept(); int yon; yon= JOptionPane.showConfirmDialog(null,si.getInetAddress().getHostAddress() + "向你發(fā)出文件接收,接收?","文件接收",JOptionPane.YES_NO_OPTION); if(yon==JOptionPane.YES_OPTION){ new fi

8、leAccepter(si).start(); }else{ OutputStream os = si.getOutputStream(); os.write("false".getBytes()); os.close(); si.close(); }}} catch(Exception event8){ } }} (2)文件接收的設(shè)計 文件接收是把通過socke

9、t流發(fā)來的字節(jié)流,還原成相應(yīng)的文件,主要代碼為: class fileAccepter extends Thread{ byte[] dataAccepter; Socket s; FileOutputStream fos; OutputStream acceptOS; InputStream acceptIS; ObjectInputStream ois; public fileAccepter(Socket sx){ s = sx; } JFrame frame = new JFra

10、me(); public void run(){ dataAccepter = new byte[DEFAULT_DATASIZE]; FileDialog fd=new FileDialog(frame,"file save dialog",FileDialog.SAVE); fd.setFile("unname"); fd.setVisible(true); String dir = fd.getDirectory(); int i = 0,j = 0;System.out.println(dir);

11、 if(dir==null){ try{ OutputStream os = s.getOutputStream(); os.write("false".getBytes()); os.close(); } catch(Exception event){ } } else{ try{ acceptOS = s.getOutputSt

12、ream(); acceptIS = s.getInputStream(); ois = new ObjectInputStream(acceptIS); acceptOS.write("true".getBytes()); acceptNameCarryer = (MyVector)ois.readObject(); acceptOS.write("ok".getBytes()); for(i = 0;i < acceptNameCarryer.siz

13、e();i++){ fos = new FileOutputStream(dir + acceptNameCarryer.elementAt(i)); note("文件" + acceptNameCarryer.elementAt(i) + "正在接收"); while(true){ j = acceptIS.read(dataAccepter); String str = new String(dataAccepter,0,j); if(str.equals("

14、over")){ note("文件" + acceptNameCarryer.elementAt(i) + "接收完畢"); break; } else{ fos.write(dataAccepter,0,j); }} fos.close(); }} catch(Exception event){} finally{ try{

15、 s.close(); acceptOS.close(); acceptIS.close(); ois.close();} catch(Exception event){ }}}}} (3)文件選擇模塊設(shè)計 文件選擇模塊是用來選擇需要傳送的文件并載入fileCarryer中,代碼為: public void fileSelect(){ FileDialog fd = new FileDialog(this,

16、"file load dialog",FileDialog.LOAD); fd.setVisible(true); boolean repeat = false; String dir = fd.getDirectory() + fd.getFile(); if(dir.equals("nullnull")){ } else{ for(int i = 0;i < realFileCarryer.size();i++){ if(((File)realFileCarryer.elementAt(i

17、)).getPath().equals(dir)){ repeat = true; } } if(repeat == false){ File file = new File(dir); realFileCarryer.addElement(file); fileCarryer.addElement(fd.getFile() + " 長度:" + file.length()); sendNameCarryer.addElement(fd.getFile());

18、 fileLength.addElement(file.length()); }else{ JOptionPane.showMessageDialog(null,"已存在此文件!"); }} } 3.2 主要類圖 圖3.1 線程類圖 圖3.2 主類test1類圖 3.3 系統(tǒng)流程 開始 結(jié)束 創(chuàng)建對話框 對各組件監(jiān)聽行 創(chuàng)建聊天服務(wù)器 創(chuàng)建文件服務(wù)器 進(jìn)行聊天 進(jìn)行文件傳 請求文件發(fā)送 選擇聊天對象 圖3.3 系統(tǒng)流程 4 具體代碼實現(xiàn)(主要源代碼) imp

19、ort java.awt.*; import java.awt.event.*; import .*; import javax.swing.*; import javax.swing.border.*; import java.awt.image.BufferedImage; import java.util.*; import java.io.*; public class test1 extends JFrame { public int DEFAULT_DATASIZE = 1024 * 10; public int DEFAULT_DELAY = 10

20、00; boolean flag = false; private JTextArea sendmessage = new JTextArea(); private JTextArea showmessage = new JTextArea(); private JSplitPane SplitPane; private JButton toolFontButton; private JButton toolFaceButton; private JButton button; private JButton button_1;

21、 private JButton button_2; private JButton button_3; private JButton button_4; private JButton button_5; private JButton button_6; private String bgbottomc = ImageManager.getImageURL("loginbc.png"); private Image bottoml = ImageManager.getImageWithImgName("loginbl.png"); pr

22、ivate Image bottomr = ImageManager.getImageWithImgName("loginbr.png"); private TexturePaint bottomcPaint = ImageManager.createTexturePaint(bgbottomc); DefaultListModel fileCarryer = new DefaultListModel(); DefaultListModel clientCarryer = new DefaultListModel(); MyVector sendNameCarryer = ne

23、w MyVector(); MyVector acceptNameCarryer = new MyVector(); MyVector realFileCarryer = new MyVector(); MyVector fileLength = new MyVector(); MyVector ipCarryer; JList JList1 = new JList(clientCarryer); JList JList2 = new JList(fileCarryer); Dimension screenSize; Dimension frameSize

24、; Socket socket = new Socket(); Socket so = new Socket(); InputStream clientin=null; OutputStream clientout=null; InputStream serverin=null; OutputStream serverout=null; FileOutputStream fos= null; private JScrollPane leftscroll = new JScrollPane(showmessage); pri

25、vate JScrollPane rightscroll = new JScrollPane(JList1); private JScrollPane rightscroll_2 = new JScrollPane(JList2); private JScrollPane bottomscroll = new JScrollPane(sendmessage); String str=""; test1() { setBounds(100,100,542,512); SplitPane = new JSplitPane();

26、 SplitPane.setResizeWeight(0.1); SplitPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT); SplitPane.setDividerLocation(387); SplitPane.setDividerSize(10); SplitPane.setEnabled(false); SplitPane.setOneTouchExpandable(true); SplitPane.setBorder(new TitledB

27、order(null, "", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));// 設(shè)置面版的邊框 getContentPane().add(SplitPane, BorderLayout.CENTER);// 將分割面版添加到上級容器中*/ JPanel Leftpanel = new JPanel(); Leftpanel.setLayout(new BorderLayout()); SplitPane.setLeftComp

28、onent(Leftpanel); JPanel Toppanel = new JPanel(); Toppanel.setPreferredSize(new Dimension(0, 300)); Toppanel.setLayout(new BorderLayout()); showmessage.setEditable(false); showmessage.setBackground(new Color(252,255,255)); showmessage.setBorder(new Tit

29、ledBorder(null, "", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); JLabel chatLabel = new JLabel("聊天信息:"); Toppanel.add(chatLabel,BorderLayout.NORTH); Toppanel.add(leftscroll,BorderLayout.CENTER); Leftpanel.add(Toppanel,BorderLayout.NOR

30、TH); JPanel Bottompanel = new JPanel(); Bottompanel.setLayout(new BorderLayout()); Leftpanel.add(Bottompanel,BorderLayout.CENTER); JPanel toolpanel = new JPanel(); toolpanel.setBackground(new Color(240,255,255)); toolpanel.setLayout(new GridLayout(1,0)); toolp

31、anel.setPreferredSize(new Dimension(0, 25)); Bottompanel.add(toolpanel,BorderLayout.NORTH); toolFontButton = createButton("/1.jpg"); toolpanel.add(toolFontButton); toolFaceButton = createButton("/2.jpg"); toolpanel.add(toolFaceButton);

32、 button = createButton("/3.jpg"); toolpanel.add(button); button_1 = createButton("/4.jpg"); toolpanel.add(button_1); button_2 = createButton("/5.jpg"); toolpanel.add(button_2); button_3 = createButton("/6.jpg"); too

33、lpanel.add(button_3); button_3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ fileSelect(); } }); button_4 = createButton("/7.jpg"); toolpanel.add(button_4); button_5 = createButton(

34、"/8.jpg"); toolpanel.add(button_5); button_6 = createButton("/9.jpg"); toolpanel.add(button_6); sendmessage.setEditable(false); JList1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { JL

35、ist1 = (JList)evt.getSource(); if (evt.getClickCount() == 1) { } if (evt.getClickCount() == 2) { note("正在和"+JList1.getSelectedValue()+"連接。。。"); if(str.equals("")) { try{ str =JList1.getSelectedValue

36、().toString(); InetAddress address = InetAddress.getByName((String)ipCarryer.elementAt(JList1.getSelectedIndex())); InetSocketAddress socketAddress = new InetSocketAddress(address, 7777); socket.connect(socketAddress); clientin= socket.getInputStream();

37、 clientout = socket.getOutputStream(); sendmessage.setEditable(true); flag=true; note("連接"+JList1.getSelectedValue()+"成功!"); new chatrecieve().start(); sendmessage.requestFocus(); setTitle("正在和"+JList1.getSelectedValue(

38、)+"聊天"); }catch (IOException ee) { JOptionPane.showMessageDialog(null,"對方不在線,請稍后再試!"); note("連接"+JList1.getSelectedValue()+"失敗"); } } try { if(str.equals(JList1.getSelectedValue().toString())); else { str

39、= JList1.getSelectedValue().toString(); if(flag){ try{ clientout.write("over".getBytes()); clientout.flush(); } catch(Exception eventb){ } }el

40、se { try{ serverout.write("over".getBytes()); serverout.flush(); } catch(Exception eventa){ } } socket.close();

41、 sendmessage.setEditable(true); if (socket.isConnected()) { } else { InetAddress address = InetAddress.getByName((String)ipCarryer.elementAt(JList1.getSelectedIndex())); InetSocketAddress socketAddress = new InetSocketAddress(address, 7777); socket.co

42、nnect(socketAddress); clientin= socket.getInputStream(); clientout = socket.getOutputStream(); sendmessage.setEditable(true); flag=true; note("連接"+JList1.getSelectedValue()+"成功!"); new chatrecieve().start(); sendmes

43、sage.requestFocus(); setTitle("正在和"+JList1.getSelectedValue()+"聊天"); } } } catch (IOException ee) { JOptionPane.showMessageDialog(null,"對方不在線,請稍后再試!"); note("連接"+JList1.getSelectedValue()+"失敗"); setTitle(""); }}}}); sendme

44、ssage.setBorder(new TitledBorder(null, "", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));// 設(shè)置面版的邊框 Bottompanel.add(bottomscroll,BorderLayout.CENTER); JButton sendButton = createButton("/110.jpg"); JButton submitButton = create

45、Button("/111.jpg"); sendButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String s = sendmessage.getText(); if (!sendmessage.getText().trim().isEmpty()) { try { note("自己:"+s); if(flag) { clientou

46、t.write(s.getBytes()); clientout.flush(); sendmessage.setText(""); } serverout.write(s.getBytes()); serverout.flush(); sendmessage.setText(""); } catch (IOException ev) { ev.printStackTrace(); }}}}); sendpanel.setLayout(new Fl

47、owLayout(FlowLayout.RIGHT,1,1)); sendpanel.add(sendButton); sendpanel.add(submitButton); Bottompanel.add(sendpanel,BorderLayout.SOUTH); submitButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ep){ System.exit(0);

48、}}); JPanel listpanel = new JPanel(); listpanel.setLayout(new BorderLayout()); SplitPane.setRightComponent(listpanel); rightscroll.setBorder(new TitledBorder(null, "", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null)); JPanel

49、righttop = new JPanel(); rightscroll.setBackground(new Color(252,255,255)); righttop.setLayout(new BorderLayout()); righttop.setPreferredSize(new Dimension(0, 250)); listpanel.add(righttop,BorderLayout.NORTH); JTextField Txt = new JTextField("文件名 文件大小

50、"); Txt.setEditable(false); Txt.setBackground(new Color(252,255,255)); righttop.add(Txt,BorderLayout.SOUTH); righttop.add(rightscroll,BorderLayout.CENTER); JLabel listLabel = new JLabel("成員列表:"); righttop.add(listLabel,BorderLayout.NORTH);

51、 JPanel rightbuttom = new JPanel(); rightbuttom.setLayout(new BorderLayout()); listpanel.add(rightbuttom,BorderLayout.CENTER); rightbuttom.add(rightscroll_2,BorderLayout.CENTER); JButton filebutton = new JButton("文件發(fā)送按鈕"); rightbuttom.add(filebutton,Border

52、Layout.SOUTH); filebutton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event){ if(JList1.getSelectedIndex() == -1){ JOptionPane.showMessageDialog(null,"請選擇一名用戶!"); } else if(fileCarryer.getSize() == 0){ J

53、OptionPane.showMessageDialog(null,"請選擇要傳送的文件!"); } else{ new fileSender().start(); }}}); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent event1){ if(flag){ try{

54、 clientout.write("over".getBytes()); clientout.flush(); } catch(Exception eventb){ } } try{ serverout.write("over".getBytes());

55、 serverout.flush(); } catch(Exception eventa){ } }}); clientLoader(); new chatServer().start(); new FileServer().start(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible

56、(true); } private JPanel sendpanel = new JPanel() { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.drawImage(bottoml, 0, 0, null); g2d.setPaint(bottomcPaint); g2d.drawImage(bottoml,

57、0, 0, null); int x = bottoml.getWidth(null); int y = 0; g2d.fillRect(x, y, 542, 39); g2d.drawImage(bottomr, 542, 0, null);}}; public static void main(String[] args) { new test1(); } private JButton createButton(String url){ JButton butto = new JButton(); bu

58、tto.setHideActionText(true); //butto.setFocusPainted(false); butto.setBorderPainted(false); butto.setContentAreaFilled(false); ImageIcon icon = new ImageIcon(test1.class.getResource(url)); butto.setIcon(icon); return butto; } public void fileSelect(){ FileDialog fd =

59、new FileDialog(this,"file load dialog",FileDialog.LOAD); fd.setVisible(true); boolean repeat = false; String dir = fd.getDirectory() + fd.getFile(); if(dir.equals("nullnull")){ } else{ for(int i = 0;i < realFileCarryer.size();i++){ if(((File)realFil

60、eCarryer.elementAt(i)).getPath().equals(dir)){ repeat = true; } } if(repeat == false){ File file = new File(dir); realFileCarryer.addElement(file); fileCarryer.addElement(fd.getFile() + " 長度:" + file.length()); sendNameCarryer.addEl

61、ement(fd.getFile()); fileLength.addElement(file.length()); }else{ JOptionPane.showMessageDialog(null,"已存在此文件!"); }}} class chatServer extends Thread{ public void run(){ try{ServerSocket server = new ServerSocket(7777); while (true) { S

62、ocket you = server.accept(); if (you != null) so=you; sendmessage.setEnabled(true); note(you.getInetAddress()+" 已和你連接成功"); sendmessage.requestFocus(); sendmessage.setEditable(true); setTitle("正在和"+you.getInetAddress(

63、)+"聊天"); serverin = you.getInputStream(); serverout = you.getOutputStream(); new chatrecieve2().start(); }} catch (Exception e5) { }} } class FileServer extends Thread{ public void run(){ try{ ServerSocket MyServer = new ServerSocket(4331); while(tr

64、ue){ Socket si = MyServer.accept(); int yon; yon = JOptionPane.showConfirmDialog(null,si.getInetAddress().getHostAddress() + "向你發(fā)出文件接收,接收?","文件接收",JOptionPane.YES_NO_OPTION); if(yon==JOptionPane.YES_OPTION){ new fileAccepter(si).start(); }e

65、lse{ OutputStream os = si.getOutputStream(); os.write("false".getBytes()); os.close(); si.close(); }}} catch(Exception event8){ }}} public void note(String mention){ int h,mi,s; Calendar ca

66、l = Calendar.getInstance(); h=cal.get(Calendar.HOUR_OF_DAY); mi=cal.get(Calendar.MINUTE); s=cal.get(Calendar.SECOND); String str = "["+(h<10?"0"+h:h)+":"+(mi<10?"0"+mi:mi)+":"+(s<10?"0"+s:s)+"]"; str = str + mention; str = str + (char)13 + (char)10; str = showmessage.getText()+str ; showmessage.setText(str); } public void clientLoader(){ ipCarryer = new MyVector(); try{ FileInputStream fis = new FileInputStream("clien

展開閱讀全文
溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!