[優(yōu)秀畢業(yè)設計精品] 基于.net的即時通訊系統(tǒng)_第1頁
已閱讀1頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  畢業(yè)設計(論文)</b></p><p>  題 目  基于 .NET的即時通訊系統(tǒng) </p><p>  學生姓名 專業(yè)班級 安工+計03-2  </p><p>  所在院系   軟件學院         </p><p>  

2、指導教師 職稱   副教授   </p><p>  所在單位 嵌入式系統(tǒng)教研室   </p><p>  完成日期 年 月 日</p><p><b>  摘 要</b></p><p>  自從1996年第一個即時通

3、訊軟件ICQ出現(xiàn)以來,即時通訊(Instant Messaging)這種以Internet網(wǎng)絡及其他有線、無線網(wǎng)絡為基礎的,以實時方式與其他在線用戶交流、傳遞信息的通訊方式,受到了人們的普遍歡迎。</p><p>  即時通訊系統(tǒng)均采用了客戶機/服務器(C/S)模式,在此模式下,服務器無疑是處于一個核心地位。因而,本文圍繞即時通訊系統(tǒng)服務器端軟件開發(fā)這一核心展開的。</p><p>  首

4、先,研究了當今流行的各種即時通訊軟件,對其進行分析,確定了基于.NET框架下實現(xiàn)即時通訊系統(tǒng)的功能分析,提出了不同的即時通訊服務器的架構。其次,圍繞即時通訊的基本文字交流(在線文字傳輸),注冊,登錄,添加好友,刪除好友等功能,設計了不同的模塊來實現(xiàn)上述功能。通過TCP/IP協(xié)議發(fā)送和管理消息。使用SQL server 2005數(shù)據(jù)庫對用戶信息以及通訊信息等進行及時保存。</p><p>  綜上所述,本論文致力于

5、研究基于.NET技術基礎,一套簡單、安全、易于使用的網(wǎng)絡即時通訊系統(tǒng)。</p><p>  關鍵詞:即時通訊系統(tǒng);服務器;在線消息傳輸</p><p><b>  Abstract</b></p><p>  Since ICQ (I Seek you), the first Instant Messaging software, was bo

6、rn in 1996, Instant Messaging, the real-time communication method that is based on Internet and other wired or wireless networks and can interview and transfer information with other online users, has been welcomed popul

7、arly.</p><p>  The instant messaging system has adopted the client and server (C/S) mode. Under this mode, the server is undoubtedly in a key position. This thesis is just launched around this core of softwa

8、re development of server end of the instant messaging system.</p><p>  First of all, I studied various kinds of popular instant messaging soft wares, analyzed them, and then confirmed that the function of In

9、stant Messaging system on .NET analyses, and put forward the framework of the server different from the common instant messaging system.</p><p>  Secondly, based the function of online message transferring,

10、registering users, login, adding friends and deleting friends, design different modules to achieve them. Sending and managing information by TCP/IP. And preserving user information and timely communication information b

11、y SQL server 2005 database.</p><p>  In this thesis, a real-time network communication system which is simple, secure and based on .NET is investigated.</p><p>  Key words: Instant Messaging sys

12、tem; Service; Online message transfer</p><p><b>  目 錄</b></p><p><b>  第一章 緒論4</b></p><p>  1.1InstantMessenger軟件的意義4</p><p>  1.2國內外主流Instan

13、tMessager軟件的分析4</p><p>  1.3本文內容安排6</p><p>  第二章 即時通訊系統(tǒng)的技術背景7</p><p>  2.1客戶機/服務器模型7</p><p>  2.2.NETFramework簡介8</p><p>  2.3VisualStudio2005簡介10&l

14、t;/p><p>  2.4Windowssocket編程原理11</p><p>  2.5SQLserver簡介18</p><p>  2.5本章小結20</p><p>  第三章 SQL語言與ADO21</p><p>  3.1常用SQL語句簡介21</p><p>  3.

15、2ADO簡介22</p><p>  3.3本章小結23</p><p>  第四章 系統(tǒng)詳細設計24</p><p>  4.1系統(tǒng)的總體設計24</p><p>  4.2數(shù)據(jù)庫詳細設計24</p><p>  4.3服務器端詳細設計25</p><p>  4.4客戶端詳細設

16、計34</p><p><b>  本章小結38</b></p><p>  第五章 系統(tǒng)測試39</p><p>  5.1客戶機/服務器系統(tǒng)軟件測試特點39</p><p>  5.2測試過程40</p><p><b>  本章小結41</b></p

17、><p><b>  結束語43</b></p><p><b>  參考文獻45</b></p><p><b>  致謝46</b></p><p><b>  第一章 緒論 </b></p><p>  1.1Instan

18、t Messenger軟件的意義</p><p>  Internet通信目前已經(jīng)成為人們生活的一個基本部分?!皽贤o極限”,這句移動通訊的廣告語其實更適合即時聊天。即時聊天使親友的溝通突破時空極限,使辦公室的溝通突破上下級極限,使陌生人的溝通突破環(huán)境極限,使自我與外界的溝通突破心理極限。如果說互聯(lián)網(wǎng)創(chuàng)造了新生活,那么讓新生活變得更暢快的就是即時通訊軟件(Instant Messaging Software,以下

19、簡稱IM)。早期在互聯(lián)網(wǎng)上,人們只能通過E-Mail、新聞組、BBS等“原始”方式交流,往往不能夠及時把消息傳遞給對方,甚至不知道對方什么時候能夠看到,或有誰能看到誰又會回應。作為使用頻率最高的網(wǎng)絡軟件即時聊天已經(jīng)突破了作為技術工具的極限,被認為是現(xiàn)代交流方式的象征,并構建起一種新的社會關系。它是迄今為止對人類社會生活改變最為深刻的一種網(wǎng)絡新形態(tài),沒有極限的溝通將帶來沒有極限的生活。據(jù)統(tǒng)計,迄今為止,全球約有一億多人使用即時通訊軟件在網(wǎng)

20、上交流。中國網(wǎng)民慣用的即時通訊軟件“騰訊QQ”從1999年2月誕生到現(xiàn)在,注冊用戶已超過1.6億。 </p><p>  行業(yè)研究機構Radicati Group公司一項題為《2003--2007間的即時通信和存在市場趨勢》的預報告稱,全球的即時通信服務賬戶將由去年的5.9億美元增長到2007年的14.39億美元,而即時通訊軟件市場將由2003年底時的680萬美元大幅成長至2007年的2570萬美元。其中企業(yè)領域

21、增長顯著,賬戶數(shù)量將由去年的6000萬增長到2007年的3.49億,增長幅度高達600%。即時通訊軟件的互動性高于BBS和E-mail,它比電話嚴肅,E-mail輕松,利用它可以實時傳送文字信息、語音信息和發(fā)送文件。另外,它還可以作為單位內部聯(lián)絡的一種方式,可以用來召開網(wǎng)絡會議,比起實地的會議來,不僅快捷,而且節(jié)省開支。就像現(xiàn)代社會的電話一樣,目前即時通訊軟件的確做到了這一點。</p><p>  1.2國內外主

22、流Instant Messager 軟件的分析</p><p>  目前市面上流行的即時通訊軟件主要有:ICQ, 騰迅QQ, MSN, YAHOO MESSENGER, UC,以及“網(wǎng)易泡泡”等軟件。ICQ原是以色列的幾名學生開發(fā)出來的一款即時通訊工具軟件。它用點對點的方式通訊,任何登錄ICQ服務器的用戶,盡管國籍、膚色、文化背景、宗教信仰同,都能夠在網(wǎng)上即時溝通。任何人只要擁有ICQ號碼,就可以與世界各地的人做

23、朋友,它的互動性是Web網(wǎng)頁、虛擬社區(qū)和電子郵件所無法媲美的。在辦公室中,同事之間透過ICQ聯(lián)絡事宜,就算近在咫尺,也無須起身交談:與遠方的親朋好友交談,也只是輕輕敲幾下鍵盤就可以解決問題,這種交流在過去幾乎是無法想象的。但ICQ對中文的支持比較差,不適于中國使用。</p><p>  騰訊QQ是國內最時髦的即時通訊工具,其用戶的年齡層次從剛開始的中小學生族,發(fā)展到現(xiàn)在的幾乎所有上網(wǎng)者。每當看到連到網(wǎng)上的一臺臺電

24、腦上,屏幕上跳躍著一個個各式各樣“小人頭兒”,就知道QQ上的好友來信了。目前“騰迅QQ”開展了大量的網(wǎng)絡增值服務,如為其用戶提供網(wǎng)上尋呼、視頻聊天、語音聊天、網(wǎng)絡硬盤、動態(tài)新聞等信息,開通手機上的移動QQ服務,同時為每一個QQ賬號送一個5M的免費郵箱。</p><p>  MSN是軟件巨頭微軟開發(fā)的MSN Messenger,把MSN Messenger嵌進了Windows XP操作系統(tǒng)里。MSN Messeng

25、er有近30種語言的不同版本。您還可以使用此免費程序撥打電話,用交談取代輸入,向手機發(fā)送消息,監(jiān)視新的電子郵件,共享圖片或其他任何文件,邀請朋友玩DirectPlay兼容游戲等等。目前MSN Messenger已經(jīng)推出ver8.0,在功能和外觀上都有很大的變化,在外觀界面上,也比以前的版本更加生動。</p><p>  Yahoo Messenger(雅虎通)是由美國著名搜索網(wǎng)站Yahoo。推出聊天工具。Yaho

26、o Messenger的功能側重點似乎并不在它的聊天功能上,它更像一個免費信息提供器。Yahoo Messenger支持多種操作系統(tǒng),并支持其它便攜式無線設備,具有與其它即時通訊軟件所不同的商業(yè)價值。你不僅可以隨時查看新聞和天氣預報,甚至可以隨時查閱股票行情;你還能利用Yahoo Messenger安排自己的日程計劃,隨時探測新到的郵件。朗瑪UC是2002年里新涌現(xiàn)的即時通訊軟件代表,它的開發(fā)者想通過朗瑪UC給大家?guī)磉@樣一個全新的聊天

27、理念:新一代開放式即時通訊娛樂平臺。朗瑪UC也的確給了我們一種前所未有的聊天新感覺:網(wǎng)上聊天,也可以情景交融。它采用自由變換場景、個性在線心情等人性化設計,配合視頻電話、信息群發(fā)、文件互傳、在線游戲等使您在聊天的同時能邊說、邊看、邊玩。2004年7月6日,新浪網(wǎng)正式收購UC即時通訊技術平臺,全力進軍即時通訊市場。“網(wǎng)易泡泡”是由中國的互聯(lián)網(wǎng)技術公司網(wǎng)易(NetEase)開發(fā)的功能強大,方便靈活的即時通訊工具。集即時聊天、手機短信、在線娛

28、樂等功能于一體,除具備目前</p><p><b>  1.3本文內容安排</b></p><p><b>  本文的內容包括:</b></p><p>  流行的IM軟件的追蹤與分析,通過對各大公司的相似的即時通訊軟件的現(xiàn)狀分析,闡述基于.NET框架下開發(fā)即時通訊軟件可行性分析及實現(xiàn)方法;</p><

29、p>  開發(fā)基于.NET框架下即時通訊軟件的技術基礎概述,圍繞實現(xiàn).NET技術下即時通訊系統(tǒng)所需的系統(tǒng)結構、平臺選取、以及一些技術方面的基本概念和基本思想;</p><p>  在.NET技術下實現(xiàn)即時通訊系統(tǒng)的整體計思路及概要設計,從總體上介紹本系統(tǒng)的設計要求;</p><p>  在.NET技術下即時通訊系統(tǒng)服務器端和客戶端的詳細設計,同時分析了各個功能模塊的設計與實現(xiàn);<

30、/p><p>  在.NET技術下即時通訊系統(tǒng)的測試及其結果。</p><p>  最后進行了總結和展望了本系統(tǒng)尚需完善的部分。</p><p>  即時通訊系統(tǒng)的技術背景</p><p>  2.1客戶機/服務器模型</p><p>  客戶機/服務器模型,又稱為Client/Server模型,簡稱C/S架構。如圖2-1

31、所示。C/S計算技術在信息產業(yè)中占有重要的地位。這種客戶/服務器模型是一種非對稱式編程模式。該模式的基本思想是把集中在一起的應用劃分成為功能不同的兩個部分,分別在不同的計算機上運行,通過它們之間的分工合作來實現(xiàn)一個完整的功能。對于這種模式而言其中一部分需要作為服務器,用來響應并為客戶提供固定的服務; 另一部分則作為客戶機程序用來向服務器提出請求或要求某種服務。</p><p>  在此“服務器”是指能在網(wǎng)絡上提供

32、服務的任何程序。服務器接受網(wǎng)絡上的請求,完成服務后將結果返回給申請者。對于簡單的服務,把每個請求用一個IP數(shù)據(jù)報發(fā)給服務器,服務器用另一個數(shù)據(jù)報返回響應。</p><p>  客 戶 機 服 務 器</p><p>  圖2-1 客戶機/服務器模型示意圖</p><p>

33、  客戶機和服務器都是獨立的計算機。當一臺連入網(wǎng)絡的計算機向其他計算機提供各種網(wǎng)絡服務(如數(shù)據(jù)、文件的共享等)時,它就被叫做服務器。而那些用于訪問服務器資料的計算機則被叫做客戶機。嚴格說來,客戶機/服務器模型并不是從物理分布的角度來定義,它所體現(xiàn)的是一種網(wǎng)絡數(shù)據(jù)訪問的實現(xiàn)方式。采用這種結構的系統(tǒng)目前應用非常廣泛。如賓館、酒店的客房登一記、結算系統(tǒng),超市的POS系統(tǒng),銀行、郵電的網(wǎng)絡系統(tǒng)等。</p><p>  2

34、.2.NET Framework簡介</p><p>  籠統(tǒng)的講.NET是由微軟公司設計開發(fā)的一種統(tǒng)一的開發(fā)平臺。</p><p>  微軟公司官方的定義是:Microsoft® .NET 是 Microsoft XML Web services 平臺。XML Web services 允許應用程序通過 Internet 進行通訊和共享數(shù)據(jù),而不管所采用的是哪種操作系統(tǒng)、設備或

35、編程語言。Microsoft .NET 平臺提供創(chuàng)建 XML Web services 并將這些服務集成在一起之所需。對個人用戶的好處是無縫的、吸引人的體驗。</p><p>  .NET開發(fā)框架的幾個主要組成部分:首先是整個開發(fā)框架的基礎,即通用語言運行時以及它所提供的一組基礎類庫;在開發(fā)技術方面,.NET提供了全新的數(shù)據(jù)庫訪問技術ADO .NET,以及網(wǎng)絡應用開發(fā)技術ASP .NET和Windows編程技術W

36、in Forms;在開發(fā)語言方面,.NET提供了VB,VC++,C#, Jscript等多種語言支持;而Visual Studio .NET則是全面支持.NET的開發(fā)工具。</p><p>  通用語言運行時,即Common Language Runtime 。Microsoft .NET 給開發(fā)人員帶來了一種全新的開發(fā)框架,而通用語言運行時則處于這個框架的最低層,是這個框架的基礎。開發(fā)人員對于所謂的C運行時、V

37、B運行時、Jave虛擬機這些概念已經(jīng)非常熟悉了,而通用語言運行時則為多種語言提供了一種統(tǒng)一的運行環(huán)境。另外它還提供了更多的功能和特性,比如統(tǒng)一和簡化的編程模型,用戶不必迷惑于Win32 API和COM;避免了DLL的版本和更新問題(常稱為DLL地獄),從而大大簡化了應用程序的發(fā)布和升級;多種語言之間的交互,例如我們甚至可以在VB中使用C++編寫的類;自動的內存和資源管理等等。Microsoft .NET正是基于通用語言運行時,實現(xiàn)了這些

38、開發(fā)人員夢寐以求的功能。</p><p>  基于通用語言運行時開發(fā)的代碼稱為受控代碼,它的運行步驟大體如下:首先使用一種通用語言運行時支持的編程語言編寫源代碼,然后使用針對通用語言運行時的編譯器生成獨立于機器的微軟中間語言(Microsoft Intermediate Language),同時產生運行所需的元數(shù)據(jù),在代碼運行時再使用即時編譯器(Just In Time Compiler)生成相應的機器代碼來執(zhí)行

39、。</p><p>  當然對于開發(fā)者而言,他們除了關心通用語言運行時提供那么多新特性外,它究竟給開發(fā)者提供了什么樣的編程接口,這就是基礎類庫(Base Class Library)。這組基礎類庫包括了從輸入輸出到數(shù)據(jù)訪問等各方面,提供了一個統(tǒng)一的面向對象的、層次化的、可擴展的編程接口。它使用一種點號分隔的方法,使得查找和使用類庫非常容易。例如基礎類庫中的根,它的命名空間是System,提供數(shù)據(jù)訪問的類庫的命名空

40、間是System.Data。在使用時,開發(fā)者只需在自己的應用中添加所需的基礎類庫的引用,然后就可以使用這個類庫中的所有方法、屬性等等。跟傳統(tǒng)的Windows編程相比,使用和擴展基礎類庫都非常容易,這使得開發(fā)者能夠高效、快速的構建基于下一代互聯(lián)網(wǎng)的網(wǎng)絡應用。</p><p>  幾乎所有的應用程序都需要訪問從簡單的文本文件到大型的關系型數(shù)據(jù)庫等各種不同類型的數(shù)據(jù) 。在Microsoft .NET中訪問數(shù)據(jù)庫的技術是

41、ADO .NET。ADO .NET提供了一組用來連接到數(shù)據(jù)庫,運行命令,返回記錄集的類庫,與從前的ADO(ActiveX Data Object)相比,Connection和Command對象很類似,而ADO .NET的革新主要體現(xiàn)在如下幾個方面:</p><p>  首先,ADO .NET提供了對XML的強大支持,這也是ADO .NET的一個主要設計目標。在ADO .NET中通過XMLReader,XMLWri

42、ter, XMLNavigator, XMLDocument等可以方便的創(chuàng)建和使用XML數(shù)據(jù),并且支持W3C 的 XSLT、DTD、XDR等標準。ADO .NET對XML的支持也為XML成為Microsoft .NET中數(shù)據(jù)交換的統(tǒng)一格式提供了基礎。</p><p>  其次,ADO .NET引入了DataSet的概念,這是一個駐于內存的數(shù)據(jù)緩沖區(qū),它提供了數(shù)據(jù)的關系型視圖。不管數(shù)據(jù)來源于一個關系型的數(shù)據(jù)庫,還是

43、來源于一個XML文檔,我們都可以用一個統(tǒng)一的編程模型來創(chuàng)建和使用它。它替代了原有的Recordset的對象,提高了程序的交互性和可擴展性,尤其適合于分布式的應用場合。</p><p>  另外,ADO .NET中還引入了一些新的對象,例如DataReader可以用來高效率的讀取數(shù)據(jù),產生一個只讀的記錄集等等。簡而言之,ADO .NET通過一系列新的對象和編程模型,并與XML緊密結合,使得在Microsoft .N

44、ET中的數(shù)據(jù)操作十分方便和高效。</p><p>  傳統(tǒng)的基于Windows的應用(Win Forms),它仍然是Microsoft .NET戰(zhàn)略中不可或缺的一部分。在Microsoft .NET中開發(fā)傳統(tǒng)的基于Windows的應用程序時,除了可以利用現(xiàn)有的技術例如ActiveX控件以及豐富的Windows接口外,還可以基于通用語言運行時開發(fā),可以使用ADO .NET、網(wǎng)絡服務等,這樣也可以實現(xiàn)諸如避免DLL地

45、獄、多語言支持等.NET的新特性。從上面的介紹中我們已經(jīng)知道Microsoft .NET開發(fā)框架支持多種語言,在目前的測試版中已經(jīng)支持 VB,C++,C#和Jscript四種語言以及它們之間的深層次交互。而且微軟支持第三方生產針對Microsoft .NET的編譯器和開發(fā)工具,這也就是說幾乎所有市場上的編程語言都有可能應用于Microsoft .NET開發(fā)框架。這樣開發(fā)者可以任意選擇自己喜愛的語言,這種開放和交互的特性正是開發(fā)者所熱愛的

46、。</p><p>  需要特別指出的是,微軟在Microsoft .NET中推出了全新的C#語言,這種全新的面向對象的語言使得開發(fā)者可以快速的構建從底層系統(tǒng)級到高層商業(yè)組件的不同應用。C#在保證了強大的功能和靈活性的同時,給C和C++帶來了類似于VB的快速開發(fā),并且它還針對.NET作了特別設計,比如C#允許XML數(shù)據(jù)直接映射為它的數(shù)據(jù)類型等等,這些特性結合起來使得C#成為優(yōu)秀的下一代網(wǎng)絡編程語言。</p&

47、gt;<p>  與此同時Microsoft .NET對原有的VB和C++也做了很大的改進,使得它們更加適應Microsoft .NET開發(fā)框架的需求。例如在Visual Basic .NET中增加了繼承等面向對象的特性,結構化的出錯處理等等;可管理的C++擴展,大大提高了利用C++來開發(fā)Microsoft .NET應用的效率等。</p><p>  2.3Visual Studio 2005簡介&

48、lt;/p><p>  Visual Studio.NET是.NET平臺下最為強大的開發(fā)工具,無論是軟件服務商,還是企業(yè)應用程序的部署與發(fā)布,Visual Studio.NET都可以提供近乎完美的解決方案。Visual Studio.NET提供了包括設計、編碼、編譯調試、數(shù)據(jù)庫聯(lián)接操作等基本功能和基于開放架構的服務器組件開發(fā)平臺、企業(yè)開發(fā)工具和應用程序重新發(fā)布工具以及性能評測報告等高級功能。</p>&

49、lt;p>  2.3.1Visual Studio 2005特性簡介</p><p>  Visual Studio .NET 是一套完整的開發(fā)工具,用于生成 ASP Web 應用程序、XML Web services、桌面應用程序和移動應用程序。Visual Basic .NET、Visual C++ .NET、Visual C# .NET 和 Visual J# .NET 全都使用相同的集成開發(fā)環(huán)境 (

50、IDE),該環(huán)境允許它們共享工具并有助于創(chuàng)建混合語言解決方案。另外,這些語言利用了 .NET Framework 的功能,此框架提供對簡化 ASP Web 應用程序和 XML Web services 開發(fā)的關鍵技術的訪問。</p><p>  Visual Studio 2005的優(yōu)點是:</p><p>  領先于業(yè)界的數(shù)據(jù)庫工具。</p><p>  強健而靈

51、活的軟件建模。</p><p>  高效的體系結構指導。</p><p><b>  關鍵測試功能。</b></p><p><b>  集成的源代碼控制。</b></p><p>  2.3.2Visual Studio 2005主要組件及功能菜單介紹</p><p>  

52、在Visual Studio 2005中主要包括下面的組件:</p><p>  文本編輯器:主要用于代碼的編寫。</p><p>  界面設計器:主要用于設計窗體和頁面的外觀。</p><p>  工具箱:主要用于設計窗體和頁面時添加各種控件。</p><p>  資源編輯器:主要用于項目資源的修改和設計。</p><p

53、>  屬性窗口:主要用于修改各個控件的屬性值。</p><p>  輸出窗口:主要用于顯示命令行窗口的輸出結果。</p><p>  錯誤列表:主要用于提示程序的各種錯誤。</p><p>  調試器: 主要用于對程序的調試。比如斷點測試等。</p><p>  2.4Windows socket 編程原理</p><

54、;p>  2.4.1Windows socket 介紹</p><p>  Windows下網(wǎng)絡編程的規(guī)范-Windows Sockets是Windows下得到廣泛應用的、開放的、支持多種協(xié)議的網(wǎng)絡編程接口。1991年到現(xiàn)在,經(jīng)過不斷完善并在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成為Windows網(wǎng)絡編程的事實上的標準。 </p>

55、<p>  Windows Sockets規(guī)范以U.C. Berkeley大學BSD UNIX中流行的Socket接口為范例定義了一套Microsoft Windows下網(wǎng)絡編程接口。它不僅包含了人們所熟悉的Berkeley Socket風格的庫函數(shù);也包含了一組針對Windows的擴展庫函數(shù),以使程序員能充分地利用Windows消息驅動機制進行編程。Windows Sockets規(guī)范本意在于提供給應用程序開發(fā)者一套簡單的AP

56、I,并讓各家網(wǎng)絡軟件供應商共同遵守。此外,在一個特定版本W(wǎng)indows的基礎上,Windows Sockets也定義了一個二進制接口(ABI),以此來保證應用Windows Sockets API的應用程序能夠在任何網(wǎng)絡軟件供應商的符合Windows Sockets協(xié)議的實現(xiàn)上工作。因此這份規(guī)范定義了應用程序開發(fā)者能夠使用,并且網(wǎng)絡軟件供應商能夠實現(xiàn)的一套庫函數(shù)調用和相關語義。遵守這套Windows Sockets規(guī)范的網(wǎng)絡軟件,我們稱

57、之為Windows Sockets兼容的,而Windows Sockets兼容實現(xiàn)的提供者,我們稱之為Windows Sockets提供者。一</p><p>  圖2-2 Winsock 關系圖</p><p>  通信的基礎是套接口(Socket),一個套接口是通訊的一端。在這一端上你可以找到與其對應的一個名字。一個正在被使用的套接口都有它的類型和與其相關的進程。套接口存在于通訊域

58、中。通訊域是為了處理一般的線程通過套接口通訊而引進的一種抽象概念。套接口通常和同一個域中的套接口交換數(shù)據(jù)(數(shù)據(jù)交換也可能穿越域的界限,但這時一定要執(zhí)行某種解釋程序)。Windows Sockets規(guī)范支持單一的通訊域,即Internet域。各種進程使用這個域互相之間用Internet協(xié)議族來進行通訊(Windows Sockets 1.1以上的版本支持其他的域,例如Windows Sockets 2.2)。套接口可以根據(jù)通訊性質分類;這

59、種性質對于用戶是可見的。應用程序一般僅在同一類的套接口間通訊。不過只要底層的通訊協(xié)議允許,不同類型的套接口間也照樣可以通訊。用戶目前可以使用兩種套接口,即流套接口和數(shù)據(jù)報套接口。流套接口提供了雙向的,有序的,無重復并且無記錄邊界的數(shù)據(jù)流服務。數(shù)據(jù)報套接口支持雙向的數(shù)據(jù)流,但并不保證是可靠,有序,無重復的。也就是說,一個從數(shù)據(jù)報套接口接收信息的進程有可能發(fā)現(xiàn)信息重復了,或者和發(fā)出時的順序不</p><p>  一個

60、在建立分布式應用時最常用的范例便是客戶機/服務器模型。在這種方案中客戶應用程序向服務器程序請求服務。這種方式隱含了在建立客戶機/服務器間通訊時的非對稱性??蛻魴C/服務器模型工作時要求有一套為客戶機和服務器所共識的慣例來保證服務能夠被提供(或被接受)。這一套慣例包含了一套協(xié)議。它必須在通訊的兩頭都被實現(xiàn)。根據(jù)不同的實際情況,協(xié)議可能是對稱的或是非對稱的。在對稱的協(xié)議中,每一方都有可能扮演主從角色;在非對稱協(xié)議中,一方被不可改變地認為是主機

61、,而另一方則是從機。一個對稱協(xié)議的例子是Internet中用于終端仿真的TELNET。而非對稱協(xié)議的例子是Internet中的FTP。無論具體的協(xié)議是對稱的或是非對稱的,當服務被提供時必然存在"客戶進程"和"服務進程"。一個服務程序通常在一個眾所周知的地址監(jiān)聽對服務的請求,也就是說,服務進程一直處于休眠狀態(tài),直到一個客戶對這個服務的地址提出了連接請求。在這個時刻,服務程序被"驚醒&quo

62、t;并且為客戶提供服務-對客戶的請求做出適當?shù)姆磻km然基于連接的服務是設計客戶機/服務器應用程序時的標準,但有些服務也是可以通過數(shù)據(jù)報套接口提供的。</p><p>  數(shù)據(jù)報套接口可以用來向許多系統(tǒng)支持的網(wǎng)絡發(fā)送廣播數(shù)據(jù)包。要實現(xiàn)這種功能,網(wǎng)絡本身必須支持廣播功能,因為系統(tǒng)軟件并不提供對廣播功能的任何模擬。廣播信息將會給網(wǎng)絡造成極重的負擔,因為它們要求網(wǎng)絡上的每臺主機都為它們服務,所以發(fā)送廣播數(shù)據(jù)包的能力被限

63、制于那些用顯式標記了允許廣播的套接口中。廣播通常是為了如下兩個原因而使用的:1. 一個應用程序希望在本地網(wǎng)絡中找到一個資源,而應用程序對該資源的地址又沒有任何先驗的知識。2. 一些重要的功能,例如路由要求把它們的信息發(fā)送給所有可以找到的鄰機。被廣播信息的目的地址取決于這一信息將在何種網(wǎng)絡上廣播。Internet域中支持一個速記地址用于廣播-INADDR_BROADCAST。由于使用廣播以前必須捆綁一個數(shù)據(jù)報套接口,所以所有收到的廣播消息

64、都帶有發(fā)送者的地址和端口。</p><p>  Intel處理器的字節(jié)順序是和DEC VAX處理器的字節(jié)順序一致的。因此它與68000型處理器以及Internet的順序是不同的,所以用戶在使用時要特別小心以保證正確的順序。任何從Windows Sockets函數(shù)對IP地址和端口號的引用和傳送給Windows Sockets函數(shù)的IP地址和端口號均是按照網(wǎng)絡順序組織的,這也包括了sockaddr_in結構這一數(shù)據(jù)類

65、型中的IP地址域和端口域(但不包括sin_family域)??紤]到一個應用程序通常用與"時間"服務對應的端口來和服務器連接,而服務器提供某種機制來通知用戶使用另一端口。因此getservbyname()函數(shù)返回的端口號已經(jīng)是網(wǎng)絡順序了,可以直接用來組成一個地址,而不需要進行轉換。然而如果用戶輸入一個數(shù),而且指定使用這一端口號,應用程序則必須在使用它建立地址以前,把它從主機順序轉換成網(wǎng)絡順序(使用htons()函數(shù))。

66、相應地,如果應用程序希望顯示包含于某一地址中的端口號(例如從getpeername()函數(shù)中返回的),這一端口號就必須在被顯示前從網(wǎng)絡順序轉換到主機順序(使用ntohs()函數(shù))。由于Intel處理器和Inter</p><p>  在MFC中MS為套接口提供了相應的類CAsyncSocket和CSocket,CAsyncSocket提供基于異步通信的套接口封裝功能,CSocket則是由CAsyncSocket派

67、生,提供更加高層次的功能,例如可以將套接口上發(fā)送和接收的數(shù)據(jù)和一個文件對象(CSocketFile)關聯(lián)起來,通過讀寫文件來達到發(fā)送和接收數(shù)據(jù)的目的,此外CSocket提供的通信為同步通信,數(shù)據(jù)未接收到或是未發(fā)送完之前調用不會返回。此外通過MFC類開發(fā)者可以不考慮網(wǎng)絡字節(jié)順序和忽略更多的通信細節(jié)。</p><p>  在一次網(wǎng)絡通信/連接中有以下幾個參數(shù)需要被設置:本地IP地址 - 本地端口號 - 對方端口號 -

68、 對方IP地址。左邊兩部分稱為一個半關聯(lián),當與右邊兩部分建立連接后就稱為一個全關聯(lián)。在這個全關聯(lián)的套接口上可以雙向的交換數(shù)據(jù)。如果是使用無連接的通信則只需要建立一個半關聯(lián),在發(fā)送和接收時指明另一半的參數(shù)就可以了,所以可以說無連接的通信是將數(shù)據(jù)發(fā)送到另一臺主機的指定端口。此外不論是有連接還是無連接的通信都不需要雙方的端口號相同。</p><p>  在創(chuàng)建CAsyncSocket對象時通過調用 BOOL CAsyn

69、cSocket::Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, LPCTSTR lpszSocketAddress = NULL )通過指明lEvent所包含的標記來確定需要異步處理的事件,對于指明的相關事

70、件的相關函數(shù)調用都不需要等待完成后才返回,函數(shù)會馬上返回然后在完成任務后發(fā)送事件通知,并利用重載以下成員函數(shù)來處理各種網(wǎng)絡事件如表2-1所示。</p><p>  表2-1 消息存儲表</p><p>  我們看到重載的函數(shù)中都有一個參數(shù)nErrorCode,為零則表示正常完成,非零則表示錯誤。通過int CAsyncSocket::GetLastError()可以得到錯誤值。 下面我們

71、看看套接口類所提供的一些功能,通過這些功能我們可以方便的建立網(wǎng)絡連接和發(fā)送數(shù)據(jù)。 </p><p>  BOOL CAsyncSocket::Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOS

72、E, LPCTSTR lpszSocketAddress = NULL );用于創(chuàng)建一個本地套接口,其中nSocketPort為使用的端口號,為零則表示由系統(tǒng)自動選擇,通常在客戶端都使用這個選擇。nSocketType為使用的協(xié)議族,SOCK_STREAM表明使用有連接的服務,SOCK_DGRAM表明使用無連接的數(shù)據(jù)報服務。lpszSocketAddress為本地的IP地址,可以使用點分法表示如10.1.1.3。 </p>

73、<p>  BOOL CAsyncSocket::Bind( UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL )作為等待連接方時產生一個網(wǎng)絡半關聯(lián),或者是使用UDP協(xié)議時產生一個網(wǎng)絡半關聯(lián)。 </p><p>  BOOL CAsyncSocket::Listen( int nConnectionBacklog = 5 )作為等待連接方時指明同時可

74、以接受的連接數(shù),請注意不是總共可以接受的連接數(shù)。 </p><p>  BOOL CAsyncSocket::Accept( CAsyncSocket& rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL )作為等待連接方將等待連接建立,當連接建立后一個新的套接口將被創(chuàng)建,該套接口將會被用于通信。 </p&

75、gt;<p>  BOOL CAsyncSocket::Connect( LPCTSTR lpszHostAddress, UINT nHostPort );作為連接方發(fā)起與等待連接方的連接,需要指明對方的IP地址和端口號。 </p><p>  void CAsyncSocket::Close( );關閉套接口。 </p><p>  int CAsyncSocket::

76、Send( const void* lpBuf, int nBufLen, int nFlags = 0 )int CAsyncSocket::Receive( void* lpBuf, int nBufLen, int nFlags = 0 );在建立連接后發(fā)送和接收數(shù)據(jù),nFlags為標記位,雙方需要指明相同的標記。 </p><p>  int CAsyncSocket::SendTo( const vo

77、id* lpBuf, int nBufLen, UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlags = 0 )int CAsyncSocket::ReceiveFrom( void* lpBuf, int nBufLen, CString& rSocketAddress, UINT& rSocketPort, int nFlags = 0 );對于無連接

78、通信發(fā)送和接收數(shù)據(jù),需要指明對方的IP地址和端口號,nFlags為標記位,雙方需要指明相同的標記。 </p><p>  我們可以看到大多數(shù)的函數(shù)都返回一個布爾值表明是否成功。如果發(fā)生錯誤可以通過int CAsyncSocket::GetLastError()得到錯誤值。 由于CSocket由CAsyncSocket派生所以擁有CAsyncSocket的所有功能,此外你可以通過BOOL CSocket::Crea

79、te( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL )來創(chuàng)建套接口,這樣創(chuàng)建的套接口沒有辦法異步處理事件,所有的調用都必需完成后才會返回。</p><p>  在上面的介紹中我們看到MFC提供的套接口類屏蔽了大多數(shù)的細節(jié),我們只需要做很少的工作就可以開發(fā)出利用網(wǎng)絡進行通信的軟件。<

80、/p><p>  2.4.2利用Winsock 進行無連接的通訊</p><p>  WinSock提供了對UDP(用戶數(shù)據(jù)報協(xié)議)的支持,通過UDP協(xié)議我們可以向指定IP地址的主機發(fā)送數(shù)據(jù),同時也可以從指定IP地址的主機接收數(shù)據(jù),發(fā)送和接收方處于相同的地位沒有主次之分。利用CSocket操縱無連接的數(shù)據(jù)發(fā)送很簡單,首先生成一個本地套接口(需要指明SOCK_DGRAM標記),然后利用下面的方法

81、:int CAsyncSocket::SendTo( const void* lpBuf, int nBufLen, UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlags = 0 )發(fā)送數(shù)。intCAsyncSocket::ReceiveFrom( void* lpBuf, int nBufLen, CString& rSocketAddress, UINT&

82、; rSocketPort, int nFlags = 0 )接收數(shù)據(jù)。函數(shù)調用順序如圖2-3所示。</p><p>  圖2-3 無連接通訊示意圖</p><p>  利用UDP協(xié)議發(fā)送和接收都可以是雙向的,就是說任何一個主機都可以發(fā)送和接收數(shù)據(jù)。但是UDP協(xié)議是無連接的,所以發(fā)送的數(shù)據(jù)不一定能被接收,此外接收的順序也有可能與發(fā)送順序不一致。</p><p> 

83、 2.4.3利用Windows socket 進行有連接的通訊</p><p>  WinSock提供了對TCP(傳輸控制協(xié)議)的支持,通過TCP協(xié)議我們可以與指定IP地址的主機建立,同時利用建立的連接可以雙向的交換數(shù)據(jù)。利用CSocket操縱有連接數(shù)據(jù)交換很簡單,但是在有連接的通信中必需有一方扮演服務器的角色等待另一方(客戶方)的連接請求,所以服務器方需要建立一個監(jiān)聽套接口,然后在此套接口上等待連接。當連接建立

84、后會產生一個新的套接口用于通信。而客戶方在創(chuàng)建套接口后只需要簡單的調用連接函數(shù)就可以創(chuàng)建連接。對于有連接的通信不論是數(shù)據(jù)的發(fā)送還是發(fā)送與接收的順序都是有保證的。雙方的函數(shù)調用順序如圖2-4所示。</p><p>  圖2-5 有連接通訊示意圖</p><p>  2.5SQL server 簡介</p><p>  SQL Server是由Microsoft開發(fā)和

85、推廣的關系數(shù)據(jù)庫管理系統(tǒng)(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發(fā)的,并于1988年推出了第一個OS/2版本。 SQL Server近年來不斷更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用戶見面;SQL Server 2000是Microsoft公司于2000年推出的最新版本。</p>

86、<p>  2.5.1SQL server 特點</p><p>  真正的客戶機/服務器體系結構。</p><p>  圖形化用戶界面,使系統(tǒng)管理和數(shù)據(jù)庫管理更加直觀、簡單。</p><p>  豐富的編程接口工具,為用戶進行程序設計提供了更大的選擇余地。</p><p>  SQL Server與Windows NT完全集成,利

87、用了NT的許多功能,如發(fā)送和接受消息,管理登錄安全性等。SQL Server也可以很好地與Microsoft BackOffice產品集成。</p><p>  具有很好的伸縮性,可跨越從運行Windows 95/98的膝上型電腦到運行Windows 2000的大型多處理器等多種平臺使用。</p><p>  對Web技術的支持,使用戶能夠很容易地將數(shù)據(jù)庫中的數(shù)據(jù)發(fā)布到Web頁面上。 &l

88、t;/p><p>  SQL Server提供數(shù)據(jù)倉庫功能,這個功能只在Oracle和其他更昂貴的DBMS中才有。</p><p>  2.5.2SQL server 系統(tǒng)數(shù)據(jù)庫簡介</p><p>  SQL Server 2005有4個系統(tǒng)數(shù)據(jù)庫 </p><p>  Master數(shù)據(jù)庫是SQL Server系統(tǒng)最重要的數(shù)據(jù)庫,它記錄了SQL

89、 Server系統(tǒng)的所有系統(tǒng)信息。這些系統(tǒng)信息包括所有的登錄信息、系統(tǒng)設置信息、SQL Server的初始化信息和其它系統(tǒng)數(shù)據(jù)庫及用戶數(shù)據(jù)庫的相關信息。 </p><p>  Model數(shù)據(jù)庫是所有用戶數(shù)據(jù)庫和Tempdb數(shù)據(jù)庫的模板數(shù)據(jù)庫,它含有Master數(shù)據(jù)庫所有系統(tǒng)表的子集,這些系統(tǒng)數(shù)據(jù)庫是每個用戶定義數(shù)據(jù)庫需要的。 </p><p>  Msdb數(shù)據(jù)庫是代理服務數(shù)據(jù)庫,為其警報、

90、任務調度和記錄操作員的操作提供存儲空間。 </p><p>  Tempdb是一個臨時數(shù)據(jù)庫,它為所有的臨時表、臨時存儲過程及其它臨時操作提供存儲空間。 </p><p>  2.5.3 SQL server 系統(tǒng)表簡介</p><p>  系統(tǒng)目錄是由描述SQL Server 系統(tǒng)的數(shù)據(jù)庫、基表、視圖和索引等對象的結構的系統(tǒng)表組成。SQL Server 經(jīng)常訪問系

91、統(tǒng)目錄,檢索系統(tǒng)正常運行所需的必要信息。 </p><p>  Sysobjects表</p><p>  SQL Server 的主系統(tǒng)表sysobjects出現(xiàn)在每個數(shù)據(jù)庫中,它對每個數(shù)據(jù)庫對象含有一行記錄。</p><p>  Syscolumns表</p><p>  系統(tǒng)表syscolumns出現(xiàn)在master數(shù)據(jù)庫和每個用戶自定義

92、的數(shù)據(jù)庫中,它對基表或者視圖的每個列和存儲過程中的每個參數(shù)含有一行記錄。</p><p>  Sysindexes表</p><p>  系統(tǒng)表sysindexes出現(xiàn)在master數(shù)據(jù)庫和每個用戶自定義的數(shù)據(jù)庫中,它對每個索引和沒有聚簇索引的每個表含有一行記錄,它還對包括文本/圖像數(shù)據(jù)的每個表含有一行記錄。 </p><p><b>  Sysusers

93、表</b></p><p>  系統(tǒng)表sysusers出現(xiàn)在master數(shù)據(jù)庫和每個用戶自定義的數(shù)據(jù)庫中,它對整個數(shù)據(jù)庫中的每個Windows NT用戶、Windows NT用戶組、SQL Server 用戶或者SQL Server 角色含有一行記錄。</p><p>  Sysdatabases表</p><p>  系統(tǒng)表sysdatabases對S

94、QL Server 系統(tǒng)上的每個系統(tǒng)數(shù)據(jù)庫和用戶自定義的數(shù)據(jù)庫含有一行記錄,它只出現(xiàn)在master數(shù)據(jù)庫中。</p><p>  Sysdepends表</p><p>  系統(tǒng)表Sysdepends對表、視圖和存儲過程之間的每個依賴關系含有一行記錄,它出現(xiàn)在master數(shù)據(jù)庫和每個用戶自定義的數(shù)據(jù)庫中。</p><p>  Sysconstraints表</

95、p><p>  系統(tǒng)表sysconstraints對使用CREATE TABLE或者ALTER TABLE語句為數(shù)據(jù)庫對象定義的每個完整性約束含有一行記錄,它出現(xiàn)在master數(shù)據(jù)庫和每個用戶自定義的數(shù)據(jù)庫中。</p><p>  2.5.3SQL server 數(shù)據(jù)類型</p><p><b>  整型數(shù)據(jù)類型</b></p>&l

96、t;p>  整型數(shù)據(jù)類型是最常用的數(shù)據(jù)類型之一,它主要用來存儲數(shù)值,可以直接進行數(shù)據(jù)運算,而不必使用函數(shù)轉換。 </p><p>  int(integer):int(或integer)數(shù)據(jù)類型可以存儲從-231(-2,147,483,648)到231-1(2,147,483,647)范圍之間的所有正負整數(shù)。 </p><p>  Smallint:可以存儲從-215(-32,768

97、)到215-1(32,768)范圍之間的所有正負整數(shù) 。</p><p>  Tinyint:可以存儲從0到255范圍之間的所有正整數(shù)。</p><p><b>  字符數(shù)據(jù)類型 </b></p><p>  字符數(shù)據(jù)類型可以用來存儲各種字母、數(shù)字符號和特殊符號。</p><p>  Char:其定義形式為char(n

98、),每個字符和符號占用一個字節(jié)的存儲空間。 </p><p>  Varchar:其定義形式為varchar(n)。用char數(shù)據(jù)類型可以存儲長達255個字符的可變長度字符串 。</p><p>  Nchar:其定義形式為nchar(n)。 </p><p>  Nvarchar:其定義形式為nvarchar(n)。 </p><p>  

99、日期和時間數(shù)據(jù)類型 </p><p>  Datetime:用于存儲日期和時間的結合體 。它可以存儲從公元1753年1月1日零時起到公元9999年12月31日23時59分59秒之間的所有日期和時間 。</p><p>  Smalldatetime:與datetime數(shù)據(jù)類型類似,但其日期時間范圍較小,它存儲從1900年1月1日到2079年6月6日內的日期。 </p><

100、;p>  Text:用于存儲大量文本數(shù)據(jù),其容量理論上為1到231-1(2,147,483,647)個字節(jié),但實際應用時要根據(jù)硬盤的存儲空間而定。</p><p>  Ntext:與text數(shù)據(jù)類型類似,存儲在其中的數(shù)據(jù)通常是直接能輸出到顯示設備上的字符,顯示設備可以是顯示器、窗口或者打印機。</p><p>  Image:用于存儲照片、目錄圖片或者圖畫,其理論容量為231-1(2

101、,147,483,647)個字節(jié)。</p><p><b>  位數(shù)據(jù)類型 </b></p><p>  Bit:稱為位數(shù)據(jù)類型,其數(shù)據(jù)有兩種取值:0和1,長度為1字節(jié)。</p><p><b>  2.5本章小結</b></p><p>  本章是完成本項目所必需的理論技術基礎。通過本章的介紹,我

102、們明確了本項目中所采用的理論基礎和模型,利于理解后續(xù)章節(jié)。其實本章中每一個小節(jié)的知識都是博大精深的,在本文中沒有篇幅去詳細介紹,有興趣可以參看一些參考文獻和書籍。</p><p><b>  SQL語言與ADO</b></p><p>  3.1常用SQL語句簡介</p><p>  SQL是Structure Query Language的縮

103、寫,即結構化查詢語言。SQL語言是專門為訪問數(shù)據(jù)庫而設計的結構化語言,可以完成數(shù)據(jù)查詢、數(shù)據(jù)定義、數(shù)據(jù)操作和數(shù)據(jù)控制等操作。常用語句有:INSERT語句; UDPATE語句; DELETE語句; SELECT語句。</p><p><b>  INSERT語句</b></p><p>  INSERT語句的功能是在指定的表中插入一行新的。INSERT語句的基本語法結構

104、如下: </p><p>  INSERT INTO <表名>[(<字段名1>[,<字段名2>…)]</p><p>  VALUES(<常量1>[,<常量2>]…)</p><p><b>  UPDATE語句</b></p><p>  UPDATE的功能是

105、在指定的表中修改滿足條件的記錄。UPDATE語句的基本語法結構如下:</p><p>  UPDATE <表名> SET <列名>=<表達式>[,<列名>=<表達式>]…</p><p><b>  WHERE<條件></b></p><p><b>  DELE

106、TE語句</b></p><p>  DELETE語句的功能是刪除指定的表中滿足條件的記錄。DELETE語句的基本語法結構如下:</p><p>  DELETE FROM <表名></p><p>  [WHERE <條件>]</p><p><b>  SELECT語句</b>&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論