VB_NET中的網(wǎng)絡(luò)編程.ppt_第1頁
VB_NET中的網(wǎng)絡(luò)編程.ppt_第2頁
VB_NET中的網(wǎng)絡(luò)編程.ppt_第3頁
VB_NET中的網(wǎng)絡(luò)編程.ppt_第4頁
VB_NET中的網(wǎng)絡(luò)編程.ppt_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余41頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一. 網(wǎng)絡(luò)編程基礎(chǔ)知識(shí) 二. .Net中的網(wǎng)絡(luò)編程類 三. .Net網(wǎng)絡(luò)程序基本結(jié)構(gòu) 四. .Net多線程技術(shù) 五. 在網(wǎng)絡(luò)編程中結(jié)合多線程技術(shù),本章目錄,一網(wǎng)絡(luò)編程基礎(chǔ)知識(shí)1.1 Socket,Socket通常也稱為“套接字”,用于描述IP地址和端口。它實(shí)質(zhì)上提供了進(jìn)程通信的端點(diǎn)。進(jìn)程通信之前,雙方首先必須各自創(chuàng)建一個(gè)端點(diǎn),否則沒有辦法建立聯(lián)系并相互通信。正如打電話之前,雙方必須各自擁有一臺(tái)電話機(jī)。 Socket同樣可以被視為一個(gè)數(shù)據(jù)通道,這個(gè)通道架設(shè)在應(yīng)用程序端(客戶端)和服務(wù)器端之間,而后,數(shù)據(jù)的讀?。ń邮眨┖蛯懭耄òl(fā)送)均針對(duì)這個(gè)通道來進(jìn)行。,本章目錄,socket 是面向客戶/服務(wù)器

2、模型而設(shè)計(jì)的,針對(duì)客戶和服務(wù)器程序提供不同的socket功能調(diào)用。 客戶端需要申請(qǐng)一個(gè)socket (相當(dāng)于一個(gè)想打電話的人首先獲得一部電話機(jī)),系統(tǒng)為之分配一個(gè)socket號(hào);服務(wù)器端則擁有全局公認(rèn)的 socket ,任何客戶端都可以向它發(fā)出連接請(qǐng)求和信息請(qǐng)求(相當(dāng)于一個(gè)被呼叫的電話擁有一個(gè)呼叫方知道的電話號(hào)碼)。,本章目錄,Socket 是訪問 Internet 使用得最廣泛的方法。在Internet上有很多用于提供網(wǎng)絡(luò)服務(wù)的主機(jī),這些主機(jī)一般運(yùn)行了多個(gè)服務(wù)軟件,提供不同的服務(wù)(比如電子郵件服務(wù)、ftp服務(wù)、http網(wǎng)頁服務(wù)等)。而每種服務(wù)實(shí)際上都會(huì)打開一個(gè)Socket,并綁定到一個(gè)端口上

3、,不同的端口對(duì)應(yīng)于不同的服務(wù)。,本章目錄,可見,Socket正如其英文原意(“插座”)那樣,象一個(gè)多孔插座。而一臺(tái)主機(jī)猶如布滿各種插座的房間,每個(gè)插座有一個(gè)編號(hào),有的插座提供220伏交流電, 有的提供110伏交流電,有的則提供有線電視節(jié)目。 客戶軟件將插頭插到不同編號(hào)的插座,就可以得到不同的服務(wù)。,本章目錄,1.2 網(wǎng)絡(luò)協(xié)議,網(wǎng)絡(luò)協(xié)議是網(wǎng)絡(luò)上計(jì)算機(jī)為交換數(shù)據(jù)所必須遵守的通信規(guī)范和消息格式的集合。目前常用的網(wǎng)絡(luò)協(xié)議有TCP協(xié)議和UDP協(xié)議。,本章目錄,.TCP協(xié)議 TCP是Tranfer Control Protocol的簡(jiǎn)稱,是一種面向連接的保證可靠傳輸?shù)膮f(xié)議。通過TCP協(xié)議傳輸,得到的是一個(gè)

4、順序的無差錯(cuò)的數(shù)據(jù)流。發(fā)送方和接收方的兩個(gè)Socket之間必須建立連接,以便在TCP協(xié)議的基礎(chǔ)上進(jìn)行通信。當(dāng)一個(gè)Socket(通常都是Server Socket)等待建立連接時(shí),另一個(gè)Socket可以請(qǐng)求連接,一旦這兩個(gè)Socket連接起來,它們就可以進(jìn)行雙向數(shù)據(jù)傳輸,雙方都可以進(jìn)行發(fā)送或接收操作。,本章目錄,.UDP協(xié)議 UDP是User Datagram Protocol(數(shù)據(jù)報(bào)協(xié)議)的簡(jiǎn)稱,是一種無連接的協(xié)議。每個(gè)數(shù)據(jù)報(bào)都是一個(gè)獨(dú)立的信息,在其中包括了完整的源地址或目的地址信息,因此無需要建立發(fā)送方和接收方的連接。 每個(gè)數(shù)據(jù)報(bào)在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此能否到達(dá)目的地,到達(dá)目

5、的地的時(shí)間以及內(nèi)容的正確性都是不能被保證的。,本章目錄,二 .Net中的網(wǎng)絡(luò)編程類,.Net Framework為應(yīng)用程序訪問Internet提供了分層的、可擴(kuò)展的以及受管轄的網(wǎng)絡(luò)服務(wù)。其名字空間System.Net和System.Net.Sockets包含豐富的類可以開發(fā)多種網(wǎng)絡(luò)應(yīng)用程序。.Net采用的分層結(jié)構(gòu)允許應(yīng)用程序在不同的控制級(jí)別上訪問網(wǎng)絡(luò),這些級(jí)別幾乎囊括了Internet的所有需要 從Socket套接字到普通的請(qǐng)求/響應(yīng)。,本章目錄,拋開ISO/OSI模型的7層構(gòu)架,單從TCP/IP模型上的邏輯層面上看,.Net網(wǎng)絡(luò)編程類可以視為包含3個(gè)層次:請(qǐng)求/響應(yīng)層、應(yīng)用協(xié)議層、傳輸層。

6、WebReqeust和WebResponse 代表了請(qǐng)求/響應(yīng)層,支持Http、TCP和UDP的類組成了應(yīng)用協(xié)議層,而Socket類處于最底層的傳輸層。,本章目錄,System.Net.Sockets 命名空間為需要訪問網(wǎng)絡(luò)底層功能的開發(fā)人員提供了Socket接口。 System.Net 命名空間中的所有其他網(wǎng)絡(luò)訪問類都是建立在Socket的基礎(chǔ)上的。如TCPClient、TCPListener 和 UDPClient 類,以及提供用于網(wǎng)絡(luò)訪問的基礎(chǔ)數(shù)據(jù)流的NetworkStream類等。,本章目錄,2.1 IPAddress類和IPEndPoint類 在System.Net命名空間中,有兩個(gè)

7、專門用于處理各種類型的IP地址信息的類型:IPAddress類和IPEndPoint類。 1.IPAddress類 IPAddress類用于表示一個(gè)IP地址,可以使用Parse方法直接創(chuàng)建IPAddress的實(shí)例: IPAddress ip=IPAddress.Parse(); IPAddress類還提供了4個(gè)只讀屬性,分別代表程序中使用的特殊IP地址:(1)Any:代表本地系統(tǒng)可用的任何IP地址。 (2)Broadcast:代表本地網(wǎng)絡(luò)的IP 廣播地址。 (3)Loopback:代表系統(tǒng)的回送地址。 (4)None:代表系統(tǒng)上沒有網(wǎng)絡(luò)接口。,本章目錄,另外,在Syste

8、m.Net命名空間下,包含有一個(gè)Dns類,可以利用該類的GetHostName()方法找到本地系統(tǒng)的主機(jī)名,然后再用GetHostByName()找到主機(jī)的IP地址。 2.IPEndPoint類 IPEndPoint對(duì)象通過一個(gè)IP地址/端口的組合來確定一個(gè)連接端點(diǎn)。其構(gòu)造函數(shù)為: IPEndPoint(IpAddress address,int port); 該類有幾個(gè)常用的屬性: (1)Address:得到或者設(shè)置IP地址。 (2)AddressFamily: 獲取網(wǎng)際協(xié)議 (IP) 地址族。 (3)Port: 獲取或設(shè)置終結(jié)點(diǎn)的 TCP 端口號(hào).,本章目錄,例: Dim localEnd

9、Point As New IPEndPoint ( IPAddress.Parse(), 1024)指定IP和Port,本章目錄,2.2 Socket類 Socket類的構(gòu)造函數(shù)為: public Socket( AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType); addressFamily 參數(shù)指定Socket 使用的尋址方案,對(duì)于網(wǎng)絡(luò)上的IP通信來說,addressFamily總是使用AddressFamily.InterNetwork這個(gè)值。 socketType

10、 參數(shù)指定Socket 的類型。 protocolType 參數(shù)指定 Socket 使用的協(xié)議。,本章目錄,本章目錄,例: Imports System.Net.sockets Imports S Dim Sserver As Socket = Nothing Sserver = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) 使用TCP協(xié)議,Socket類中常用的成員函數(shù) (1)綁定地址(服務(wù)器端創(chuàng)建Socket后首先要做 的工作) void Bind(IPEndPoint localEP

11、); 使 Socket與 一個(gè)本地端點(diǎn)相關(guān)聯(lián)。 只有服務(wù)器端的Socket需要進(jìn)行綁定。而且只有在 進(jìn)行綁定后才能在服務(wù)器端調(diào)用Socket的其它功能。 例:Dim localEndPoint As New IPEndPoint ( IPAddress.Parse(“”), 1024)指定IP地址和端口 Sserver.Bind(localEndPoint)把socket和該端點(diǎn)綁定,本章目錄,(2)監(jiān)聽連接請(qǐng)求(只在服務(wù)器端需要這一步驟) void Listen(int backlog); backlog指定最多可以接受的傳入連接數(shù)。 設(shè)置套接字處于監(jiān)聽狀態(tài)。當(dāng)數(shù)據(jù)到達(dá)某個(gè)

12、端口時(shí),它會(huì)向主機(jī)發(fā)送通知消息。 例: Sserver.Listen(100)開始監(jiān)聽,最多接受100個(gè)連接。,本章目錄,(3)接受連接請(qǐng)求(只在服務(wù)器端需要這一步驟) Socket Accept(); 注意返回值是一個(gè)新建立的Socket。 當(dāng)服務(wù)器端正在監(jiān)聽的Socket調(diào)用Accept成員函數(shù),并且接收到了某個(gè)客戶端發(fā)來的連接請(qǐng)求時(shí),就會(huì)新建立一個(gè)Socket,專門用來和這個(gè)客戶端進(jìn)行通信。 例:Dim newsocket As Socket = Sserver.Accept() 注意:服務(wù)器端和客戶端真正進(jìn)行收發(fā)數(shù)據(jù)都是通過 在建立連接時(shí)新建的socket進(jìn)行的。在上面的例子里 就是通

13、過newsocket,而不是通過Sserver 。,本章目錄,(4)建立連接(只在客戶端需要這一步驟) void Connect(IPEndPoint ip); 用來與遠(yuǎn)程服務(wù)器建立連接。連接之后,可以用Send()發(fā)送數(shù)據(jù)或用Receive()函數(shù)接收數(shù)據(jù)。 例:Dim Sclient = New Socket ( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) Dim localEndPoint As New IPEndPoint ( IPAddress.Parse(“”), 1024) 指

14、定要連接的服務(wù)器端的端點(diǎn) Sclient.Connect(localEndPoint),本章目錄,(5)發(fā)送數(shù)據(jù) 可以使用Socket類的Send()或SendTo()成員函數(shù)。 int Send(byte buffer); int SendTo(byte buffer,IPEndPoint remoteIP); 向指定的地址發(fā)送數(shù)據(jù)。 例: SClient.Send(Encoding.Unicode.GetBytes(TextBox1.Text) 例子中的Encoding類是在System.Text名字空間中定義的(所以需要在程序中Import System.Text)。另外采用Unicod

15、e編碼才能正確傳送漢字。,本章目錄,(6)接收數(shù)據(jù) 使用Socket類的Receive()或ReceiveFrom()成員函數(shù)來接收數(shù)據(jù)。 int Receive(byte buffer); int ReceiveFrom(byte buffer,ref IPEndPoint ip) 例:Dim bytes(1024) As Byte 用來存儲(chǔ)接收到的字節(jié)newsocket.Receive(bytes) newsocket是服務(wù)器端接受一個(gè)連接請(qǐng)求后新建的一個(gè)socket,本章目錄,(7)關(guān)閉Socket 使用Socket類的Close()成員函數(shù)來關(guān)閉不再使用的socket。 例: asoc

16、ket.Close() asocket是之前創(chuàng)建的一個(gè)socket,本章目錄,三.Net網(wǎng)絡(luò)程序基本結(jié)構(gòu),基于IP的通信有兩種通信類型:面向連接的和無連接的。在面向連接的通信中,Socket使用TCP協(xié)議來建立兩個(gè)IP地址端點(diǎn)之間的會(huì)話。一旦建立了這種連接,就可以在設(shè)備之間可靠地傳輸數(shù)據(jù)。 為了建立面向連接的Socket通信,服務(wù)器和客戶端必須分別進(jìn)行編程(也就是分別為服務(wù)器端和客戶端編寫一個(gè)獨(dú)立的程序)。,本章目錄,面向連接的網(wǎng)絡(luò)程序基本結(jié)構(gòu)及流程 服務(wù)器端 客戶端,本章目錄,3.1 服務(wù)器端程序的基本流程 (1)建立Socket。 (2)將Socket綁定到用于TCP通信的本地IP地址和端

17、口上。 (3)設(shè)置Socket處于監(jiān)聽狀態(tài)。 (4)等待客戶端連接請(qǐng)求,當(dāng)收到連接請(qǐng)求時(shí)則與客戶端建立連接。 (5)與客戶端發(fā)送數(shù)據(jù)或接受數(shù)據(jù)。 (6)關(guān)閉Socket。,本章目錄,3.2 客戶端程序的基本流程 (1)建立Socket。 (2)與服務(wù)器進(jìn)行連接。 (3)發(fā)送或接受數(shù)據(jù)。 (4)關(guān)閉Socket。,本章目錄,3.3 使用TcpListener和TcpClient類 在System.Net.Sockets.命名空間下,有兩個(gè)專門 用于TCP協(xié)議編程的類:TCPClient和TCPListener類。 這兩個(gè)類提供了直觀的容易使用的屬性和方法,從而 降低了TCP協(xié)議編程的難度。,本章

18、目錄,. TcpListener(服務(wù)器端使用) TcpListener 類提供一些簡(jiǎn)單方法,用于在阻塞同步模式下偵聽和接受傳入連接請(qǐng)求??蛻舳耸褂肨cpClient或Socket來連接TcpListener。 可以使用IPEndPoint、本地 IP 地址及端口號(hào)或者僅使用端口號(hào),來創(chuàng)建 TcpListener。可以將本地 IP 地址指定為 Any,將本地端口號(hào)指定為 0(如果希望基礎(chǔ)服務(wù)提供程序自動(dòng)分配這些值)。,本章目錄,Start()方法用來開始偵聽傳入的連接請(qǐng)求。Start() 將對(duì)傳入連接進(jìn)行排隊(duì),直到調(diào)用 Stop()方法或它 已經(jīng)完成MaxConnections排隊(duì)為止??墒褂?/p>

19、 AcceptSocket() 或 AcceptTcpClient()從傳入連接請(qǐng) 求隊(duì)列提取連接。這兩種方法將阻塞。如果要避免阻 塞,可首先使用 Pending()方法來確定隊(duì)列中是否有 可用的連接請(qǐng)求。調(diào)用Stop()方法來關(guān)閉TcpListener。,本章目錄,. TcpClient(客戶端使用) TcpClient類是一個(gè) TCP 客戶端,它提供了一些簡(jiǎn)單的方法,用于在同步阻塞模式下通過網(wǎng)絡(luò)來連接、發(fā)送和接收流數(shù)據(jù)。它可以和TCPListener或者使用TCP創(chuàng)建的服務(wù)器端Socket進(jìn)行連接。 可以使用下面兩種方法之一連接到服務(wù)器端: (1)創(chuàng)建一個(gè)TcpClient,并調(diào)用三個(gè)可用

20、的Connect方法之一 : public void Connect(IPEndPoint):使用指定的遠(yuǎn)程網(wǎng)絡(luò)終結(jié)點(diǎn)將客戶端連接到遠(yuǎn)程 TCP 主機(jī)。,本章目錄,public void Connect(IPAddress, int):使用指定的 IP 地址和端口號(hào)將客戶端連接到 TCP 主機(jī)。 public void Connect(string, int):將客戶端連接到指定主機(jī)上的指定端口。 (2)使用遠(yuǎn)程主機(jī)的主機(jī)名和端口號(hào)創(chuàng)建TcpClient。此構(gòu)造函數(shù)將自動(dòng)嘗試一個(gè)連接。 要發(fā)送和接收數(shù)據(jù),可以使用 GetStream()方法來獲取一個(gè)NetworkStream。調(diào)用 Netwo

21、rkStream的Write()和Read()方法與遠(yuǎn)程主機(jī)之間發(fā)送和接收數(shù)據(jù)。使用 Close()方法釋放與TcpClient 關(guān)聯(lián)的所有資源。,本章目錄,3.4 NetworkStream(網(wǎng)絡(luò)流)類 NetworkStream類提供用于網(wǎng)絡(luò)訪問的基礎(chǔ)數(shù)據(jù) 流。它提供了在阻塞模式下通過 Stream套接字發(fā)送和 接收數(shù)據(jù)的方法。要?jiǎng)?chuàng)建NetworkStream,必須提供 連接的Socket。也可以指定 NetworkStream 對(duì)所提 供的Socket具有哪些FileAccess權(quán)限。 該類的Write()和Read()方法用于簡(jiǎn)單的單線程同 步阻塞 I/O。若要使用不同的線程來處理I/

22、O,則可以 使用BeginWrite()/ EndWrite()和BeginRead()/ EndRead()方法進(jìn)行通信。,本章目錄,. NetworkStream的構(gòu)造函數(shù) (1) public NetworkStream(Socket):為指定的Socket創(chuàng)建 NetworkStream類的新實(shí)例。 (2) public NetworkStream(Socket, bool):用指定的Socket所屬權(quán)為指定的Socket初始化 NetworkStream 類的新實(shí)例。 (3) public NetworkStream(Socket, FileAccess):用指定的訪問權(quán)限為指定的S

23、ocket創(chuàng)建 NetworkStream類的新實(shí)例。 (4) public NetworkStream(Socket, FileAccess, bool):用指定的訪問權(quán)限和指定的Socket所屬權(quán)為指定的Socket創(chuàng)建 NetworkStream類的新實(shí)例。,本章目錄,四.Net多線程技術(shù),進(jìn)程:應(yīng)用程序的運(yùn)行實(shí)例,是應(yīng)用程序的一次動(dòng)態(tài)執(zhí)行。 線程:進(jìn)程內(nèi)部的一個(gè)執(zhí)行單元。從根本上說,線程是可由操作系統(tǒng)調(diào)度的一個(gè)最簡(jiǎn)單的代碼單元,負(fù)責(zé)執(zhí)行包含在進(jìn)程的地址空間中的程序代碼。 應(yīng)用程序域 :在.NET框架中,提出了應(yīng)用程序域的概念。所有程序編譯后生成的都是中間代碼,而這些中間代碼的隔離、加載

24、和卸載以及安全邊界的提供都是通過應(yīng)用程序域來實(shí)現(xiàn)。一個(gè)進(jìn)程可以包含一個(gè)或多個(gè)應(yīng)用程序域,而一個(gè)應(yīng)用程序域又可以包含一個(gè)或多個(gè)線程。無論在同一個(gè)進(jìn)程之內(nèi)還是在不同的進(jìn)程之間,每個(gè)應(yīng)用程序域之間都是相互無關(guān)的,這些不同的應(yīng)用程序域之間只能通過遠(yuǎn)程通訊來實(shí)現(xiàn)消息和對(duì)象的傳遞,本章目錄,本章目錄,多線程的意義:充分利用了CPU的空閑時(shí)間片,可以用盡可能少的時(shí)間來對(duì)用戶的要求做出響應(yīng),使得進(jìn)程的整體運(yùn)行效率得到較大提高,同時(shí)增強(qiáng)了應(yīng)用程序的靈活性。 由于同一進(jìn)程的所有線程是共享同一內(nèi)存,所以不需要特殊的數(shù)據(jù)傳送機(jī)制,不需要建立共享存儲(chǔ)區(qū)或共享文件,從而使得不同任務(wù)之間的協(xié)調(diào)操作與運(yùn)行、數(shù)據(jù)的交互、資源的

25、分配等問題更加易于解決。,本章目錄,VB.Net對(duì)多線程的支持 由于Visual Basic.NET是基于.NET框架的,而.NET框 架的重要組成部分CLR(Common Language Runtime, 通用語言運(yùn)行時(shí))內(nèi)置支持多線程應(yīng)用,可以通過系統(tǒng)的 System.Threading.Thread類直接建立多線程應(yīng)用程序, 并且支持線程池等高級(jí)功能。因此任何.NET框架結(jié)構(gòu)下的 語言,包括Visual Basic.NET在編寫多線程應(yīng)用程序的時(shí) 候,都可以直接利用系統(tǒng)類所提供的對(duì)象和方法,而不再 需要使用Win32 API,因此可以大大減輕開發(fā)的困難和錯(cuò) 誤所發(fā)生的幾率。,本章目錄,

26、Thread類(線程類)的使用 在System.Threading名字空間中定義了Thread類, 用來創(chuàng)建和維護(hù)線程。它能夠創(chuàng)建并控制線程,設(shè)置其優(yōu) 先級(jí)并獲取其狀態(tài)。它擁有Start, Stop, Resume, Abort, Suspend和Join (wait for)等方法操縱線程,還可以通過 如Sleep, IsAlive, IsBackground, Priority, ApartmentState和ThreadState等方法查詢和設(shè)置線程狀 態(tài)。,本章目錄,Thread類的使用方法 (1)創(chuàng)建線程 可以通過創(chuàng)建Thread類的實(shí)例來創(chuàng)建一個(gè)新線程, 并結(jié)合AddressOf(

27、)函數(shù)來指定讓這個(gè)線程執(zhí)行的任務(wù)(一 般是一個(gè)過程或者函數(shù))。 例: Import System.Threading Public Sub threadtask() End Sub Dim newthread As Thread = New Thread(AddressOf theadtask ) 這樣就創(chuàng)建了一個(gè)專門運(yùn)行threadtask()過程的線程。,本章目錄,(2)讓線程開始運(yùn)行 在創(chuàng)建了一個(gè)線程后,線程并沒有真正開始運(yùn)行。需要調(diào)用Thread類的Start()成員函數(shù)來開始線程的運(yùn)行。 例: newthread.Start() newthread這個(gè)線程現(xiàn)在才會(huì)開始運(yùn)行。 (3)讓

28、線程休眠一段時(shí)間 可以調(diào)用Thread類的Sleep()成員函數(shù)來讓線程休眠一段時(shí)間。 例1: newthread.Sleep(2000) 讓newthread休眠2秒 例2:Thread.CurrentThread.Sleep(500) 讓當(dāng)前線程休眠500毫秒,本章目錄,(4)掛起和恢復(fù)線程 Thread類的Suspend()成員函數(shù)可以掛起一個(gè)線程(相當(dāng)于讓它暫停運(yùn)行)。而Resume()成員函數(shù)則可以使一個(gè)被掛起的線程重新開始運(yùn)行。 (5)停止一個(gè)線程的運(yùn)行 Thread類的Abort()成員函數(shù)可以終止一個(gè)線程的運(yùn)行。在調(diào)用Abort之前,需要先調(diào)用IsAlive()判斷線程處于活動(dòng)狀態(tài)。 例: Ifnewthread.IsAliveThen newthread.Abort() EndIf,本章目錄,(6)獲得線程當(dāng)前的狀

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論