端口掃描程序設(shè)計(jì)(詳細(xì)的報(bào)告+源代碼)參考模板_第1頁(yè)
端口掃描程序設(shè)計(jì)(詳細(xì)的報(bào)告+源代碼)參考模板_第2頁(yè)
端口掃描程序設(shè)計(jì)(詳細(xì)的報(bào)告+源代碼)參考模板_第3頁(yè)
端口掃描程序設(shè)計(jì)(詳細(xì)的報(bào)告+源代碼)參考模板_第4頁(yè)
端口掃描程序設(shè)計(jì)(詳細(xì)的報(bào)告+源代碼)參考模板_第5頁(yè)
已閱讀5頁(yè),還剩15頁(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ǎng)絡(luò)綜合實(shí)驗(yàn)任 務(wù) 書一、 目的與要求1 性質(zhì):設(shè)計(jì)性實(shí)驗(yàn)。2 任務(wù):設(shè)計(jì)并實(shí)現(xiàn)一個(gè)端口掃描程序,檢測(cè)某個(gè)IP或某段IP的計(jì)算機(jī)的端口工作情況。3 目的:加深對(duì)課堂講授知識(shí)的理解,熟練掌握基本的網(wǎng)絡(luò)編程技術(shù)和方法,建立網(wǎng)絡(luò)編程整體概念,使得學(xué)生初步具有研究、設(shè)計(jì)、編制和調(diào)試網(wǎng)絡(luò)程序的能力。4 要求:熟悉有關(guān)定義、概念和實(shí)現(xiàn)算法,設(shè)計(jì)出程序流程框圖和數(shù)據(jù)結(jié)構(gòu),編寫出完整的源程序,基本功能完善,方便易用,操作無(wú)誤。5 學(xué)生要求人數(shù):1人。二、 主要內(nèi)容1 編寫一個(gè)端口掃描程序,能夠顯示某個(gè)IP或某段IP的計(jì)算機(jī)的某一個(gè)或某些端口是否正在工作?;竟ぷ鬟^(guò)程如下:(1) 設(shè)定好一定的端口掃描范圍;(2

2、) 設(shè)定每個(gè)端口掃描的次數(shù),因?yàn)橛锌赡苡械亩丝谝淮螔呙杩赡懿煌ǎ?3) 創(chuàng)建socket,通過(guò)socket的connect方法來(lái)連接遠(yuǎn)程IP地址以及對(duì)應(yīng)的端口;(4) 如果返回false,表示端口沒(méi)有開放,否則端口開放。三、 進(jìn)度計(jì)劃序號(hào)設(shè)計(jì)內(nèi)容完成時(shí)間備注1任務(wù)布置及資料收集第1周周一、周二2軟件方案設(shè)計(jì)與制定第1周周三至周四3編程實(shí)現(xiàn)第1周周周五至第2周周二4程序測(cè)試與修改,撰寫報(bào)告第2周周三至周五上午5報(bào)告提交,軟件驗(yàn)收周五下午四、設(shè)計(jì)成果要求1 / 201 完成規(guī)定的實(shí)驗(yàn)任務(wù),保質(zhì)保量;2 完成綜合實(shí)驗(yàn)報(bào)告,要求格式規(guī)范,內(nèi)容具體而翔實(shí),應(yīng)體現(xiàn)自身所做的工作,注重對(duì)實(shí)驗(yàn)思路的歸納和對(duì)問(wèn)

3、題解決過(guò)程的總結(jié)。五、 考核方式1 平時(shí)成績(jī)驗(yàn)收答辯實(shí)驗(yàn)報(bào)告;2 五級(jí)分制。 學(xué)生姓名: 指導(dǎo)教師: 2009 年 6月8 日一、綜合實(shí)驗(yàn)的目的與要求1目的:加深對(duì)課堂講授知識(shí)的理解,熟練掌握基本的網(wǎng)絡(luò)編程技術(shù)和方法,建立網(wǎng)絡(luò)編程整體概念,加深對(duì)JAVA編程語(yǔ)言的使用,促進(jìn)編程能力的提高,同時(shí)為網(wǎng)絡(luò)編程打下一個(gè)比較好的基礎(chǔ)。同時(shí)對(duì)實(shí)驗(yàn)的過(guò)程要有完全的了解。2. 要求:熟悉有關(guān)定義、概念和實(shí)現(xiàn)算法,設(shè)計(jì)出程序流程框圖和數(shù)據(jù)結(jié)構(gòu),編寫出完整的源程序,基本功能完善,方便易用,操作無(wú)誤。二、綜合實(shí)驗(yàn)正文1編程語(yǔ)言的選擇針對(duì)編寫的是端口掃描的程序,所以我選擇了JAVA編程,因?yàn)橐?jiǎn)單而方便的試驗(yàn)端口掃描

4、的功能。2端口掃描實(shí)現(xiàn)的功能是:顯示某個(gè)IP或某段IP的計(jì)算機(jī)的某一個(gè)或某些端口是否正在工作21 如何選擇IP段和端口創(chuàng)建socket,通過(guò)socket的connect方法來(lái)連接遠(yuǎn)程IP地址以及對(duì)應(yīng)的端口。而我使用的是socket函數(shù)來(lái)實(shí)現(xiàn)端口的掃描和IP地址的選擇掃描。22 如何實(shí)現(xiàn)快速掃描端口通過(guò)實(shí)現(xiàn)多線程,當(dāng)一個(gè)IP或者一個(gè)端口同時(shí)分配多個(gè)線程進(jìn)行掃描,速度會(huì)比單線程掃描快許多。23 顯示掃描結(jié)果可以在使用JAVA編寫的時(shí)候,可以通過(guò)使用JScrollPane控件實(shí)現(xiàn)顯示結(jié)果。24 實(shí)現(xiàn)要求功能之余美化外觀3創(chuàng)建應(yīng)用程序界面31 建立主窗體 ,“JAVA端口掃描器”圖1-132 IP地址

5、的輸入部分圖1-2 33 端口部分,其中包括指定的端口和指定掃描的端口范圍圖1-334 多線程的實(shí)現(xiàn)和延時(shí)的控制部分圖1-435 增加的保存及快捷鍵功能圖1-5 4掃描的整個(gè)過(guò)程41 填寫IP地址 002042 填寫端口掃描的范圍為130043 線程數(shù)選擇為10044 掃描結(jié)果如下圖1-6 三端口掃描的主要部分程序如下import .*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;/* *實(shí)現(xiàn)掃描的主體程序 */public class

6、 ThreadScanpublic static JFrame main=new JFrame(JAVA端口掃描器);/顯示掃描結(jié)果public static JTextArea Result=new JTextArea(,4,40);/滾動(dòng)條面板 public static JScroll PaneresultPane = newJScrollPane(Result,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED;/輸入主機(jī)名文本框public static JTextF

7、ield hostname=new JTextField(localhost,8);/輸入ip地址前3位的輸入框public static JTextField fromip1=new JTextField(0,3);/輸入ip地址46位的輸入框public static JTextField fromip2=new JTextField(0,3);/輸入ip地址79位的輸入框public static JTextField fromip3=new JTextField(0,3);/輸入起始ip地址最后4位的輸入框public static JTextField fromip4=new JTe

8、xtField(0,3);/輸入目標(biāo)ip地址最后4位的輸入框public static JTextField toip=new JTextField(0,3);/輸入最小端口的輸入框public static JTextField minPort=new JTextField(0,4);/輸入最大端口的輸入框public static JTextField maxPort=new JTextField(1000,4);/輸入最大線程數(shù)量的輸入框public static JTextField maxThread=new JTextField(100,3);/錯(cuò)誤提示框public static

9、 JDialog DLGError=new JDialog(main,錯(cuò)誤!);public static JLabel DLGINFO=new JLabel();public static JLabel type=new JLabel(請(qǐng)選擇:);/掃描類型public static JRadioButton radioIp = new JRadioButton(IP地址:);public static JRadioButton radioHost = new JRadioButton(主機(jī)名:,true);/單選框組public static ButtonGroup group = new

10、 ButtonGroup();public static JLabel P1=new JLabel(端口范圍:);public static JLabel P2=new JLabel();public static JLabel P3=new JLabel();public static JLabel Pdot1 = new JLabel(.);public static JLabel Pdot2 = new JLabel(.);public static JLabel Pdot3 = new JLabel(.);public static JLabel TNUM=new JLabel(線程數(shù)

11、:);public static JLabel RST=new JLabel(掃描結(jié)果: );public static JLabel con=new JLabel( );/定義按鈕public static JButton OK = new JButton(確定);public static JButton Submit = new JButton(開始掃描);public static JButton Cancel = new JButton(退出);public static JButton saveButton = new JButton(保存掃描結(jié)果);/菜單欄public stat

12、ic JMenuBar myBar = new JMenuBar();public static JMenu myMenu = new JMenu(文件(F);public static JMenuItem saveItem = new JMenuItem(保存掃描結(jié)果(S);public static JMenuItem exitItem = new JMenuItem(退出(Q);public static void main(String args)main.setSize(500,400);main.setLocation(300,300);main.setResizable(fals

13、e);main.setLayout(new GridBagLayout();main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);DLGError.setSize(300,100);DLGError.setLocation(400,400);/添加“菜單欄”myMenu.add(saveItem);myMenu.add(exitItem);myBar.add(myMenu);main.setJMenuBar(myBar);/設(shè)置熱鍵myMenu.setMnemonic(F); saveItem.setMnemonic (S); /為“另存為”組

14、件設(shè)置快捷鍵為ctrl+s saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK); exitItem.setMnemonic(Q); exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK); /采用表格包型布局Container mPanel = main.getContentPane();GridBagConstraints c = new GridBagConstrain

15、ts();c.insets = new Insets(10,0,0,10);c.gridx = 0;c.gridy = 0;c.gridwidth = 10;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(type,c);group.add(radioIp);group.add(radioHost);c.gridx = 0;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagC

16、onstraints.CENTER;mPanel.add(radioIp,c);c.gridx = 1;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(fromip1,c);c.gridx = 2;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(Pdot1,c

17、);c.gridx = 3;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(fromip2,c);c.gridx = 4;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(Pdot2,c);c.gridx = 5;c.gridy = 1;c.gridwidth

18、= 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(fromip3,c);c.gridx = 6;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(Pdot3,c);c.gridx = 7;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c

19、.anchor = GridBagConstraints.CENTER;mPanel.add(fromip4,c);c.gridx = 8;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(P2,c);c.gridx = 9;c.gridy = 1;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPane

20、l.add(toip,c);c.gridx = 0;c.gridy = 2;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(radioHost,c);c.gridx = 1;c.gridy = 2;c.gridwidth = 3;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(hostname,c);c.gridx = 0;c.gridy

21、 = 3;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(P1,c);c.gridx = 1;c.gridy = 3;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(minPort,c);c.gridx = 2;c.gridy = 3;c.gridwidth = 1;c.fill = GridBagCons

22、traints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(P3,c);c.gridx = 3;c.gridy = 3;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(maxPort,c);c.gridx = 0;c.gridy = 4;c.gridwidth = 1;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraint

23、s.CENTER;mPanel.add(TNUM,c);c.gridx = 1;c.gridy = 4;c.gridwidth = 3;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(maxThread,c);c.gridx = 0;c.gridy = 5;c.gridwidth = 3;c.fill = GridBagConstraints.VERTICAL;c.anchor = GridBagConstraints.CENTER;mPanel.add(Submit,c);c.g

24、ridx = 6;c.gridy = 5;c.gridwidth = 4;c.fill = GridBagConstraints.VERTICAL;c.anchor = GridBagConstraints.CENTER;mPanel.add(Cancel,c);c.gridx = 0;c.gridy = 6;c.gridwidth = 10;c.fill = GridBagConstraints.BOTH;c.anchor = GridBagConstraints.CENTER;mPanel.add(RST,c);/設(shè)置文本區(qū)域可以換行Result.setLineWrap(true);/設(shè)置

25、文本區(qū)域不可編輯Result.setEditable(false);c.gridx = 0;c.gridy = 7;c.gridwidth = 10;c.gridheight = 4;c.fill = GridBagConstraints.VERTICAL;c.anchor = GridBagConstraints.CENTER;mPanel.add(resultPane,c);Container dPanel = DLGError.getContentPane();dPanel.setLayout(new FlowLayout(FlowLayout.CENTER);dPanel.add(DL

26、GINFO);dPanel.add(OK);Submit.addActionListener(new SubmitAction();Cancel.addActionListener(new CancleAction();OK.addActionListener(new OKAction();/實(shí)現(xiàn)退出功能exitItem.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) System.exit(0););/實(shí)現(xiàn)幫助功能sa

27、veButton.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) JFileChooser fc=new JFileChooser();int returnVal=fc.showSaveDialog(null);/點(diǎn)擊“保存”if(returnVal = 0)File saveFile=fc.getSelectedFile();try FileWriter writeOut = new FileWriter(saveFi

28、le);writeOut.write(ThreadScan.Result.getText();writeOut.close();catch (IOException ex) System.out.println(保存失敗);/點(diǎn)擊“取消”elsereturn;);main.setVisible(true);/* *實(shí)現(xiàn)“取消”功能 *退出程序 */class CancleAction implements ActionListenerpublic void actionPerformed (ActionEvent e)System.exit(0);/* *實(shí)現(xiàn)“確定”功能 *完成掃描 */cl

29、ass SubmitAction implements ActionListenerpublic void actionPerformed (ActionEvent a)int minPort;int maxPort;int maxThread;int ip1 = 0;int ip2 = 0;int ip3 = 0;int ipstart = 0;int ipend = 0;String ipaddress = ;String hostname = ;ThreadScan.Result.setText();/將確定按鈕設(shè)置成為不可用if(ThreadScan.Submit.isEnabled(

30、)ThreadScan.Submit.setEnabled(false);/* *判斷搜索的類型 *按照ip地址掃描:type = 0 *按照主機(jī)名稱掃描:type = 1 */if(ThreadScan.radioIp.isSelected()TCPThread.type = 0;/判斷ip的前3位是否為int型tryip1=Integer.parseInt(ThreadScan.fromip1.getText();catch(NumberFormatException e)ThreadScan.DLGINFO.setText(錯(cuò)誤的ip!);ThreadScan.DLGError.setV

31、isible(true);return;/判斷ip的46位是否為int型tryip2=Integer.parseInt(ThreadScan.fromip2.getText();catch(NumberFormatException e)ThreadScan.DLGINFO.setText(錯(cuò)誤的ip!);ThreadScan.DLGError.setVisible(true);return;/判斷ip的79位是否為int型tryip3=Integer.parseInt(ThreadScan.fromip3.getText();catch(NumberFormatException e)Thr

32、eadScan.DLGINFO.setText(錯(cuò)誤的ip!);ThreadScan.DLGError.setVisible(true);return;/判斷起始ip的最后4位是否為int型tryipstart=Integer.parseInt(ThreadScan.fromip4.getText();catch(NumberFormatException e)ThreadScan.DLGINFO.setText(錯(cuò)誤的ip!);ThreadScan.DLGError.setVisible(true);return;/判斷目標(biāo)ip的最后4位是否為int型tryipend=Integer.par

33、seInt(ThreadScan.toip.getText();catch(NumberFormatException e)ThreadScan.DLGINFO.setText(錯(cuò)誤的目標(biāo)ip!);ThreadScan.DLGError.setVisible(true);return;/判斷起始ip是否正確/判斷條件:大于0且小于等于255if(ip1255|ip2255|ip3255|ipstart255)ThreadScan.DLGINFO.setText( ip地址為0-255的整數(shù)! );ThreadScan.DLGError.setVisible(true);return;elseT

34、CPThread.ip1 = ip1;TCPThread.ip2 = ip2;TCPThread.ip3 = ip3;TCPThread.ipstart = ipstart;/判斷目標(biāo)ip是否正確/判斷條件:大于0且小于等于255if(ipend255)ThreadScan.DLGINFO.setText(目標(biāo)ip地址為0-255的整數(shù)! );ThreadScan.DLGError.setVisible(true);return;elseTCPThread.ipend = ipend;ipaddress = + ip1 + ip2 + ip3 + ipstart;/* *判斷ip地址的有效性

35、*/tryTCPThread.hostAddress=InetAddress.getByName(ipaddress);catch(UnknownHostException e)ThreadScan.DLGINFO.setText( 錯(cuò)誤的IP或地址不可達(dá)! );ThreadScan.DLGError.setVisible(true);return;/根據(jù)主機(jī)名進(jìn)行端口掃描if(ThreadScan.radioHost.isSelected()TCPThread.type = 1;/* *判斷主機(jī)名稱的有效性 */tryTCPThread.hostAddress=InetAddress.get

36、ByName(ThreadScan.hostname.getText();catch(UnknownHostException e)ThreadScan.DLGINFO.setText(錯(cuò)誤的域名或地址不可達(dá)! );ThreadScan.DLGError.setVisible(true);return;/* *判斷端口號(hào)的有效性 */tryminPort=Integer.parseInt(ThreadScan.minPort.getText();maxPort=Integer.parseInt(ThreadScan.maxPort.getText();maxThread=Integer.par

37、seInt(ThreadScan.maxThread.getText();catch(NumberFormatException e)ThreadScan.DLGINFO.setText(錯(cuò)誤的端口號(hào)或線程數(shù)!端口號(hào)和線程數(shù)必須為整數(shù)!);ThreadScan.DLGError.setVisible(true);return;/* *判斷最小端口號(hào)的有效范圍 *判斷條件:大于0且小于65535,最大端口應(yīng)大于最小端口 */if(minPort65535 | minPortmaxPort)ThreadScan.DLGINFO.setText(最小端口必須是0-65535并且小于最大端口的整數(shù)!)

38、;ThreadScan.DLGError.setVisible(true);return;elseTCPThread.MIN_port=minPort;/* *判斷最大端口號(hào)的有效范圍 *判斷條件:大于0且小于65535,最大端口應(yīng)大于最小端口 */if(maxPort65535 | maxPortminPort)ThreadScan.DLGINFO.setText(最大端口必須是0-65535并且大于最小端口的整數(shù)!);ThreadScan.DLGError.setVisible(true);return;elseTCPThread.MAX_port=maxPort;/* *判斷線程數(shù)量的有

39、效范圍 *判斷條件:大于1且小于200 */if(maxThread200)ThreadScan.DLGINFO.setText(線程數(shù)為1-200的整數(shù)! );ThreadScan.DLGError.setVisible(true);return;ThreadScan.Result.append(線程數(shù) +ThreadScan.maxThread.getText()+n);/啟動(dòng)線程for(int i=0;imaxThread;i+)new TCPThread(T + i,i).start();/* *實(shí)現(xiàn)錯(cuò)誤提示框中的“確定”按鈕功能 */class OKAction implements

40、 ActionListenerpublic void actionPerformed (ActionEvent e)ThreadScan.DLGError.dispose();多線程類文件:import .*;import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class TCPThread extends Threadpublic static InetAddress hostAddress;/最小的端口號(hào)public static int MIN_port;/最大的端口

41、號(hào)public static int MAX_port;/線程總數(shù)private int threadnum; /查詢方式:0為ip;1為主機(jī)名public static int type;/ip地址前3位public static int ip1;/ip地址46位public static int ip2;/ip地址79位public static int ip3;/起始ip地址的最后4位public static int ipstart;/結(jié)束ip地址的最后4位public static int ipend;/完整的ip地址public static String ipAll;/掃描的主機(jī)

42、名稱或ipString hostname = ;/端口的類別String porttype = 0;/* *構(gòu)造函數(shù) */public TCPThread(String name,int threadnum)super(name); this.threadnum = threadnum; /* *運(yùn)行函數(shù) */public void run() /ip地址int h = 0;/端口號(hào)int i = 0;Socket theTCPsocket;/根據(jù)ip地址進(jìn)行掃描if(type = 0)/ip地址循環(huán)掃描for(h = ipstart; h =ipend; h+)/組成完整的ip地址ipAll

43、 = + ip1 + . + ip2 + . + ip3 + . + h;hostname = ipAll;try/在給定主機(jī)名的情況下確定主機(jī)的 IP 地址hostAddress=InetAddress.getByName(ipAll);catch(UnknownHostException e)/不同的端口循環(huán)掃描for (i = MIN_port+threadnum; i MAX_port + Integer.parseInt(ThreadScan.maxThread.getText(); i += Integer.parseInt(ThreadScan.maxThread.getText

44、()trytheTCPsocket=new Socket(hostAddress,i);theTCPsocket.close();ThreadScan.Result.append(hostname+:+i);/判斷端口的類別switch(i)case 21:porttype = (FTP);break;case 23:porttype = (TELNET);break;case 25:porttype = (SMTP);break; case 80:porttype = (HTTP);break;case 110:porttype = (POP);break;case 139:porttype = (netBIOS);break;case 1433:porttype = (SQL Server);brea

溫馨提示

  • 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)論