基于SOCKET的即時通信系統(tǒng)設計與實現(xiàn)_第1頁
基于SOCKET的即時通信系統(tǒng)設計與實現(xiàn)_第2頁
基于SOCKET的即時通信系統(tǒng)設計與實現(xiàn)_第3頁
基于SOCKET的即時通信系統(tǒng)設計與實現(xiàn)_第4頁
基于SOCKET的即時通信系統(tǒng)設計與實現(xiàn)_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

摘要隨著網(wǎng)絡通信技術和計算機技術的進一步開展,即時通信(InstantMessaging)正在成為網(wǎng)絡在線活動中不可缺少的業(yè)務,對它的研究是互聯(lián)網(wǎng)應用中一個熱點課題。即時通信軟件的誕生,推動了企業(yè)工作效率的提高,降低了辦公費用,給企業(yè)的管理帶來了新的思路和方法,并引起了人們對該應用領域的關注。本文在現(xiàn)有的網(wǎng)絡通信技術、數(shù)據(jù)庫技術和信息平安技術的根底上設計并實現(xiàn)了新型的企業(yè)即時通信系統(tǒng)(EIM,EnterpriseInstantMessaging)。該系統(tǒng)為用戶提供了一個集文字通信、文件傳輸于一體的即時通信平臺,根本滿足了企業(yè)用戶的要求。在對即時通信系統(tǒng)的效勞器端和客戶端的主要組成模塊詳細剖析后,論文研究了各個模塊的詳細設計和實現(xiàn)方式,分別研究了每個模塊的主要功能,并給出了模塊運行效果圖。系統(tǒng)實現(xiàn)后,對系統(tǒng)進行了功能測試,并分析測試數(shù)據(jù)。實驗數(shù)據(jù)說明,該系統(tǒng)具有易于實現(xiàn)、可靠性高、易于擴展、傳輸效率高等特點,到達了預定的設計目標。關鍵詞:即時通信,Socket,通信模型,文件傳輸AbstractWiththenetworkcommunicationtechnologyandthefurtherdevelopmentofcomputertechnology,instantmessaging(InstantMessaging)isbecominganindispensablenetworkofonlinebusinessactivities;itsresearchisahottopicinInternetapplications.Thebirthofinstantmessagingsoftware,topromotetheworkefficiencyoftheenterprise,reducingbusinesscosts,totheenterprise'smanagementhasbroughtnewideasandmethods,andarousedtheconcernoftheapplications.Thesubjectintheexistingnetworkcommunicationtechnology,databasetechnologyandinformationsecuritytechnologybasedonthedesignandimplementationofanewtypeofenterpriseinstantmessagingsystem(EIM,EnterpriseInstantMessaging).Thesystemprovidesuserswithasetoftextcommunicationfiletransfer,instantmessagingplatformsinone,basicallymeettherequirementsofbusinessusers.Then,thepaperoftheinstantmessagingsystemserverandclientmodulesofthemaincomponentsofadetailedanalysis,discussesthedetaileddesignofeachmoduleandimplementation,respectively,describedthemainfunctionofeachmodule,andgivesthemoduleflowchart.Finally,thepaperoftheinstantmessagingsystemdesignedforserver-sideperformancetest,andtestdatawereanalyzed.Experimentaldatashowthatthesystemhaseasytoimplement,reliable,scalable,andhightransmissionefficiency,achieveditsdesigngoals.Keywords:InstantMessaging,Socket,CommunicationModel,FileTransfer目錄1緒論11.1課題背景11.2研究現(xiàn)狀11.3研究意義21.4研究內容31.5論文結構31.6本章小結42Socket相關技術研究52.1主流即時通信模型52.1.1P2P模型52.1.2C/S模型62.2即時通信主流的通信協(xié)議72.2.1UDP協(xié)議72.2.2TCP協(xié)議82.3Socket技術82.4多線程技術92.5JDBC技術102.6開發(fā)工具介紹112.6.1Eclipse簡介11MySQL簡介122.6.3Visio簡介132.7本章小結133對Socket通信需求分析143.1即時通信系統(tǒng)總體需求143.2系統(tǒng)功能描述143.3系統(tǒng)協(xié)議的選定143.4系統(tǒng)設計性能分析153.5本章小結154實現(xiàn)Socket通信的方案和關鍵模塊的設計164.1系統(tǒng)總體結構的描述16系統(tǒng)功能模塊設計174.2效勞器端工作流程19客戶端工作流程214.3總體實現(xiàn)方案和類的設計224.4關鍵模塊詳細設計與實現(xiàn)234.4.1利用Socket進行TCP連接23面向連接的Socket機制的模塊設計274.5文件傳輸模塊284.6本章小結295對程序進行調試與測試,并對結果進行分析305.1Socket通信的應用305.2聊天效勞器端305.3聊天客戶端325.4聊天系統(tǒng)的運行界面33結論34具體工作如下34參考文獻35致謝37附錄A英語原文38附錄B漢語翻譯531緒論即時通信(InstantMessaging)軟件是我國目前上網(wǎng)用戶使用率最高的軟件之一,即時通信系統(tǒng)(InstantMessagingSystem)可使人們在網(wǎng)上識別在線用戶并與之實時交流。目前,即時通信和、一樣,已經(jīng)成為企業(yè)員工商務溝通中廣泛使用的交流工具,但個人即時通信軟件在提高了溝通效率的同時也帶來了一些難以管理的問題,如平安性問題、用戶伸縮性問題等。如何使即時通信真正為企業(yè)效勞,發(fā)揮其長處,并對其有效管理,已經(jīng)成為研究的一個新課題。為此論文研究開發(fā)了企業(yè)級即時通信系統(tǒng),此系統(tǒng)具備個人即時通信系統(tǒng)的功能,是一款可管理、可控制的企業(yè)級即時通信系統(tǒng)。通過對國內外現(xiàn)有的即時通信軟件詳細地分析研究,提出了不同的即時通信模型,構建了適合于企業(yè)的即時通信系統(tǒng),并通過實踐驗證了其具有很好的可行性與適用性。1.1課題背景企事業(yè)的信息化開展,越來越需要不同系統(tǒng)協(xié)同工作,這就要求通過網(wǎng)絡進行即時通信。現(xiàn)在企事業(yè)單位采用和電子郵件通信手段,雖然起了很大的溝通作用,但還是無法實現(xiàn)即時通信。還有些單位采用市面上流行的即時通信軟件,比方ICQ、騰訊QQ、EMS等軟件,但這些軟件一般針對個人通信,屬于公共效勞軟件的一種,處于開放網(wǎng)絡環(huán)境下,聊天對象與聊天內容不可控制,上班時使用EMS、QQ可能會降低工作效率。EMS、QQ必須登錄Internet才能使用,因而它們在為企事業(yè)或機構用戶提供協(xié)作支持的同時,也帶來了來自公眾網(wǎng)絡的信息干擾,存在影響工作效率和信息平安的隱患,所以并不太適合企(事)業(yè)內部的通信。還有的就是使用在本地局域網(wǎng)內即時傳送消息和文件的小工具比方WinpopupX,它沒有效勞器端,通過在線列表和操作系統(tǒng)的網(wǎng)上鄰居獲取在線用戶或以網(wǎng)上鄰居中的計算機為對象進行通信,沒有平安性也不便于企業(yè)管理。在這種情況下,有必要自主開發(fā)企事業(yè)內部的即時通信軟件[1]。1.2研究現(xiàn)狀目前,信息產(chǎn)業(yè)在我國開展很快,已取得了一些成就。國家研究院對中國信息化調查結果顯示,“實時企業(yè)〞這一概念被受訪者認為是中國信息化最有應用前景的技術,認同率高達60%[2],顯示了即時通信軟件在國內市場強勁的開展勢頭。即時通信軟件在中國市場迅猛增長,各路廠商們正在紛紛推出自己的產(chǎn)品,能滿足企業(yè)需求的還是比擬少。而且目前的即時通信系統(tǒng)大多存在以下問題:1.標準化目前即時通信的開展存在的最突出問題就是相關通信協(xié)議和標準不統(tǒng)一,各個即時通信軟件采用不同的語言和協(xié)議標準而無法相互通信[3]。由于各大即時通信廠家考慮自身的商業(yè)利益,到目前為止還沒有完全制定統(tǒng)一標準的通信協(xié)議。但作為一種基于IP技術的通信根底軟件,即時通信最終成為互通互聯(lián)、開放式的在線通信工具肯定是大勢所趨。即時通信已經(jīng)成為語音及文本的在線實時通信的主要技術,它必將成為未來移動商務、在線協(xié)作及Internet應用的核心,同時也將繼承IP技術的開放風格,扮演比電子郵件更為重要的角色。2.平安性在即時通信系統(tǒng)的開展過程中,如何保障系統(tǒng)平安、為用戶提供的可靠效勞同樣重要。一個即時通信系統(tǒng)可能會保存大量用戶的個人信息,如何保證這些信息的平安將是一個長期課題[4]。所以,建立統(tǒng)一、完善的平安體系也是未來開展的一個主要趨勢。3.伸縮性即時通信從支持幾十個個人用戶,到支持上百萬的個人用戶同時在線,這需要一個非常好的可伸縮性,如何建立一個好的可伸縮的體系結構支持高并發(fā)量的用戶群體也是即時通信軟件提供商要面臨的問題。1.3研究意義隨著網(wǎng)絡技術的開展,即時通信正在成為在線活動中不可或缺的業(yè)務。由于即時通信效勞是一種公共效勞,處于開放網(wǎng)絡環(huán)境下,因而它為企業(yè)或機構用戶提供協(xié)作支持的同時,也帶來了來自公眾網(wǎng)絡的干擾,存在影響工作效率甚至信息平安的隱患。從個人即時通信向企業(yè)即時通信的演化,是目前即時通信領域的研究熱點[5],基于Socket的即時通信技術的出現(xiàn)那么解決了這一問題,其主要作用包括以下幾個方面:1.應用了目前最為流行的即時通信技術,使員工之間快速、便捷的交流。將大局部工作由手工處理轉變?yōu)橛嬎銠C處理,減少了人工錯誤和通信本錢,提高了工作人員的工作效率。2.建立了一個局部的管理的環(huán)境,通過建立平安對等組,實現(xiàn)一個可在局部范圍內從事特定工作的區(qū)域。3.建立了一個具有監(jiān)督機制的環(huán)境,在平安對等組中,根據(jù)平安級別的上下,各個成員對等點的某些特定行為可以被監(jiān)控并作相應記錄。1.4研究內容通過對市場上現(xiàn)有的國內外商業(yè)級即時通信系統(tǒng)的功能、架構詳細的研究,將一些技術和想法融入到系統(tǒng)的實現(xiàn)過程中,論文研究的基于Socket的局域網(wǎng)即時通信系統(tǒng)主要實現(xiàn)點對點的私聊、多人群聊、即時發(fā)送文件和歷史記錄的保存等功能。主要實現(xiàn)方法包括:1.利用WinSock技術實現(xiàn)實時通信整個系統(tǒng)通信基于TCP/IP的通信技術,通過調用WinSock的API實現(xiàn)相互之間的通信,而WinSock利用下層的網(wǎng)絡通信協(xié)議功能和操作系統(tǒng)調用實現(xiàn)實際的通信工作。2.采用P2P與C/S混合模式來實現(xiàn)整個系統(tǒng)的通信架構確定用戶之間通信模式為P2P模式便于直接通信高效傳輸信息,用戶與效勞器之間采用C/S模式用于通信的初始聯(lián)接及保存用戶信息和通信過程中的一些相關數(shù)據(jù)。3.應用多線程使網(wǎng)絡效勞器具有了多用戶訪問數(shù)據(jù)轉發(fā)的功能,進而解決多用戶間的并發(fā)通信問題。4.通信協(xié)議的解析與約定確定客戶端與效勞器端之間及客戶端與客戶端之間的通信協(xié)議。5.數(shù)據(jù)庫的管理與應用研究系統(tǒng)效勞端使用的數(shù)據(jù)庫訪問技術。6.界面實現(xiàn)在界面實現(xiàn)的根底上完成具體的設計與實現(xiàn)工作。1.5論文結構論文共分六章。第一章為緒論,介紹了本文的研究背景,提出了實現(xiàn)即時通信的關鍵技術,并闡述了這些技術在國內外的研究現(xiàn)狀以及開發(fā)此通信軟件的必要性與可行性,進而提出了本文的研究方向,即設計一個企業(yè)即時通信系統(tǒng)。第二章對系統(tǒng)應用的相關技術進行描述,主要描述實現(xiàn)系統(tǒng)所需的通信原理、網(wǎng)絡編程根底以及一些技術方面的根本概念與根本思想。第三章是系統(tǒng)總體設計,介紹了軟件的整體(效勞器和客戶機)設計思路和概要設計,從總體上介紹軟件的設計要求、工作流程以及各個功能模塊,對系統(tǒng)中的關鍵技術進行闡述。第四章對實現(xiàn)Socket通信的各個模塊進行了研究與分析。第五章是系統(tǒng)的測試與結果分析,為了到達可靠性和可用性,對軟件進行了功能測試。第六章也是全文的最后一章,對全文所開展的工作進行了總結。1.6本章小結本章首先介紹了該課題的課題背景,初步認識該系統(tǒng),了解了研究該系統(tǒng)的重要性。接著介紹了國內外研究現(xiàn)狀以及研究意義,了解了該系統(tǒng)在當今社會上的定位以便于在前人研究根底上能有所創(chuàng)新。接著介紹了研究內容,明確了該系統(tǒng)所研究的方向和內容。最后對整個論文的組織結構進行了描述,使參閱者對論文有大致了解。2Socket相關技術研究企業(yè)即時通信系統(tǒng)是在客戶端效勞器程序設計根底上按照軟件工程設計思想,采用大量的計算機程序設計技術和網(wǎng)絡通信技術設計并實現(xiàn)。本章主要研究主流的即時通信模型、網(wǎng)絡通信技術、程序設計等。2.1主流即時通信模型當代主流的即時通信模型主要有P2P模型與C/S模型,兩種軟件各有利弊,許多計算公司把P2P和C/S一樣的看重,經(jīng)常把兩者結合在一起使用。P2P模型P2P(PeertoPeer,對等連接或對等網(wǎng)絡)模型,是指網(wǎng)絡中的物理節(jié)點在邏輯上以相同的地位進行通信的模型,而不是處理能力的對等[6]。相對于C/S模型,其弱化了效勞器的概念,系統(tǒng)中的各個節(jié)點不再區(qū)分效勞器和客戶端的角色關系,每個節(jié)點既可請求效勞,也可提供效勞,節(jié)點之間可以直接交換資源和效勞而不必通過效勞器。P2P的最大特點就是用戶之間直接共享資源,使得PC不再是被動的客戶端,而成為具有效勞器和客戶端雙重特征的設備,當然P2P也有許多缺乏之處。首先P2P缺乏管理機制,管理者再也無法對其用戶進行必要的管理,不像在C/S模式中只需在中心點進行管理,所以P2P模型的網(wǎng)絡資源往往并不可靠[6]。其次P2P網(wǎng)絡中數(shù)據(jù)的平安性難以保證,P2P模型如圖2.1所示。圖2.1P2P模型圖C/S模型C/S(Client/Server,客戶/效勞器)模型,簡稱C/S架構。該模型可以合理利用兩端硬件環(huán)境優(yōu)勢,將任務合理分配到客戶端和效勞器上,降低系統(tǒng)通信開銷。在這種結構中,效勞器處于一個中心地位。效勞器是一個擁有強大處理能力和很大帶寬的高性能計算機,數(shù)據(jù)和信息都保存在效勞器上。效勞器始終處于工作狀態(tài),一般同時為多個客戶提供效勞,它被動地接受客戶連接,根據(jù)客戶的請求提供相應的效勞。這就造成了效勞器設計的復雜性。特別是像即時通信效勞器這類具有社區(qū)性的效勞器,它只有為群體提供效勞才有意義。即時通信效勞器是數(shù)據(jù)中心,需要同時應對眾多客戶的請求[7]。C/S通信主要特點是客戶端之間的通信都要通過效勞器的轉發(fā),會造成效勞太集中,在C/S模型中,當網(wǎng)絡增大時,效勞器的壓力就越大。當增加一個客戶,效勞器的性能就會弱化,甚至會而使效勞器失效而導致整個網(wǎng)絡的癱瘓等,其優(yōu)點是便于集中管理,像這種結構一般用在用戶數(shù)量少的局域網(wǎng)內。C/S模型圖如圖2.2所示。圖2.2C/S模型圖2.2即時通信主流的通信協(xié)議傳輸控制協(xié)議TCP和用戶數(shù)據(jù)報UDP是TCP/IP協(xié)議族的兩個主要的傳輸協(xié)議,這兩個協(xié)議都使用IP作為網(wǎng)絡層協(xié)議[8]。在網(wǎng)絡通信傳輸機制中,TCP是屬于“面向連接,可靠傳輸〞的類型,面向連接的傳輸意味著在進行通信以前,需要在兩個系統(tǒng)之間建立邏輯連接,在每個數(shù)據(jù)傳輸?shù)倪^程中都需要進行應答以保證數(shù)據(jù)包的完整。這種方法需要的網(wǎng)絡開銷較大,但卻提供一種可靠的傳輸層效勞。UDP是屬于“面向無連接,不可靠傳輸〞的類型,該協(xié)議只負責接收和傳送上層協(xié)議傳遞的消息,UDP本身不做任何檢測、修改與應答,上層協(xié)議需要自己處理這些事務。TCP、UDP最大的區(qū)別在于為應用協(xié)議提供不同的效勞。UDP協(xié)議用戶數(shù)據(jù)報協(xié)議UDP是建立在網(wǎng)際協(xié)議之上的,提供面向無連接、不可靠的數(shù)據(jù)報傳輸效勞的傳輸協(xié)議[9]。UDP傳輸不像TCP傳輸一樣需要預先建立一條連接,UDP把數(shù)據(jù)發(fā)送出去但不進行過失控制和流量控制,報文可能喪失、重復或者失序,而發(fā)送方卻得不到通知的,數(shù)據(jù)也不會被重傳。因此,UDP提供的是一種不可靠的應用數(shù)據(jù)傳輸效勞。它不需要通過一些握手協(xié)議確保連接的可靠性,發(fā)送方直接把數(shù)據(jù)播送到網(wǎng)絡上,任何欲接收者都可接收到數(shù)據(jù)。其優(yōu)點在于:1.使用UDP時,每個數(shù)據(jù)中都給出了完整的地址信息,發(fā)送數(shù)據(jù)之前不需要建立發(fā)送方與接收方的連接,因此減少了開銷和發(fā)送數(shù)據(jù)之前的時延。2.不使用擁塞控制,也不保證可靠傳輸,因此主機不需要維持具有許多參數(shù)的、復雜的連接狀態(tài)表。3.UDP不進行流量控制,沒有序列與確認、沒有超時重發(fā)等機制,因此它處理和傳輸數(shù)據(jù)的速度快。作為一種面向無連接的傳輸協(xié)議,基于UDP的應用程序在高可靠性、地延遲的網(wǎng)絡中運動的很好,但是在通信子網(wǎng)的效勞質量相對很低下的Internet上,它可能就無法運行了,因為數(shù)據(jù)報的喪失過于頻繁。原因就在于UDP的不可靠性,而這些應用程序自身可能有沒有提供可靠性保障。因此,基于UDP的應用程序如果想在可靠性低下的網(wǎng)絡中運行的話,必須自己提供可靠性保障,例如遺失數(shù)據(jù)報重重傳、失序的數(shù)據(jù)報重新組合等。TCP協(xié)議TCP是一個面向連接的、可靠的傳輸層協(xié)議,協(xié)議提供的效勞包括面向連接、雙向、有序并且無重復的數(shù)據(jù)流傳送、有效的流量控制、全雙工操作和多路復用。它主要的功能是提供大量數(shù)據(jù)的傳輸并確保其傳輸無誤,并提供錯誤檢查、數(shù)據(jù)復原以及數(shù)據(jù)超時重傳等機制,適用于傳輸可靠性要求比擬高的數(shù)據(jù)傳輸[9]。因此即時通信系統(tǒng)的消息傳輸一般是建立在TCP協(xié)議根底之上的,客戶與效勞器之間都是通過TCP傳輸數(shù)據(jù),效勞器端口一般固定。由于TCP是面向連接的,但是在國內目前IP地址短缺,很多時候采用通過局域網(wǎng)連入Internet的網(wǎng)絡狀況,TCP的對等連接顯然不能滿足所有的要求,而且目前由于黑客軟件和病毒的泛濫,大局部上網(wǎng)的個人計算機都配置了防火墻在很大程度上阻止了許多的入站請求。所以數(shù)據(jù)傳輸大都是先嘗試直接連接,如果連接不通的話采用通過效勞器中轉的方式。2.3Socket技術隨著Internet的迅猛開展,網(wǎng)絡通信應用程序的開發(fā)成為一個研究熱點。Windows環(huán)境下進行通信程序設計的最根本方法是采用Socket技術實現(xiàn)[10]。應用程序調用Socket的API(應用程序編程接口)實現(xiàn)相互之間的通信,又利用下層的網(wǎng)絡通信協(xié)議功能和操作系統(tǒng)調用實現(xiàn)實際的通信工作。Socket工作原理如圖2.3所示:應用程序B應用程序A應用程序B應用程序A網(wǎng)絡接口,例如,WindowsSocket網(wǎng)絡接口,例如,WindowsSocket網(wǎng)絡效勞協(xié)議接口,例如TCP/IP網(wǎng)絡效勞協(xié)議接口,例如TCP/IP操作系統(tǒng),例如Windows操作系統(tǒng),例如Windows物理通信介質物理通信介質圖2.3Socket工作原理圖Sockets也稱為套接字,是一種網(wǎng)絡編程接口,它是通信端點的一種抽象,提供了一種發(fā)送和接收數(shù)據(jù)的機制。用戶目前可以使用兩種類型的套接字,它們是流式套接字(StreamSockets)和數(shù)據(jù)報套接字(DatagramSockets),這兩種套接字傳輸?shù)臄?shù)據(jù)類型是不同的,因而其使用方法和相應的程序設計模型也是不同的[11]。2.4多線程技術操作系統(tǒng)是一個多任務的系統(tǒng),支持多任務調度和處理,基于該功能所提供的多任務空間,程序員可以完全控制應用程序中每一個片段的運行,從而編寫高效率的應用程序。所謂多任務通常包括這樣兩大類:單進程和多線程。進程是指在系統(tǒng)中正在運行的一個應用程序,當一個程序開始運行時,它就是一個進程,進程包括運行中的程序和程序所使用到的內存和系統(tǒng)資源[13];而一個進程又是由多個線程所組成的,線程是程序中的一個執(zhí)行流,線程是系統(tǒng)分配處理器時資源的根本單元,或者進程之內獨立執(zhí)行的一個單元,對于操作系統(tǒng)而言,其調度單元是線程[14]。每個線程都有自己的專有存放器,但代碼區(qū)是共享的,即不同的線程可以執(zhí)行同樣的函數(shù)。多線程是指,程序中包含多個執(zhí)行流,即在一個程序中可以同時運行多個不同的線程來執(zhí)行不同的任務,也就是說允許單個程序創(chuàng)立多個并行執(zhí)行的線程來完成各自的任務,也就是多進程。多線程的應用可以大大地提高CPU的利用率,在多線程程序中,一個線程必須等待的時候,CPU可以運行其它的線程而不是等待。在即時通信系統(tǒng)開發(fā)中,主要用多線程來解決多用戶同時與效勞器進行通信以及客戶端同時與其它多個客戶端通信的問題。其根本設計思路是:效勞器端啟動后,進入偵聽模式,如果有客戶端連接的信號收到,效勞器就自己新建一個Socket,然后新建一個線程用來和需要連接的客戶端通信,同時,為了能夠使windows窗口響應,還要發(fā)送事件給父窗口,接著自己繼續(xù)偵聽。新建的線程執(zhí)行完畢,自動關閉連接,釋放資源。這樣,就實現(xiàn)了Socket的連接和多線程通信。2.5JDBC技術本系統(tǒng)采用的是客戶/效勞器三層結構,即客戶端、效勞器以及數(shù)據(jù)庫。我們所用到的訪問數(shù)據(jù)庫的技術是JDBC。JDBC即活動的數(shù)據(jù)對象,是Microsoft開發(fā)的用于訪問數(shù)據(jù)庫的。其顯著特點是快速、簡單。JDBC(JavaDataBaseConnectivity,Java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的JavaAPI,可以為多種關系數(shù)據(jù)庫提供統(tǒng)一訪問,它由一組用Java語言編寫的類和接口組成。JDBC為數(shù)據(jù)庫開發(fā)人員提供了一個標準的API,據(jù)此可以構建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠用純JavaAPI編寫數(shù)據(jù)庫應用程序。有了JDBC,向各種關系數(shù)據(jù)發(fā)送SQL語句就是一件很容易的事。換言之,有了JDBCAPI,就不必為訪問Sybase數(shù)據(jù)庫專門寫一個程序,為訪問Oracle數(shù)據(jù)庫又專門寫一個程序,或為訪問Informix數(shù)據(jù)庫又編寫另一個程序等等,程序員只需用JDBCAPI寫一個程序就夠了,它可向相應數(shù)據(jù)庫發(fā)送SQL調用。同時,將Java語言和JDBC結合起來使程序員不必為不同的平臺編寫不同的應用程序,只須寫一遍程序就可以讓它在任何平臺上運行,這也是Java語言“編寫一次,處處運行〞的優(yōu)勢。 Java數(shù)據(jù)庫連接體系結構是用于Java應用程序連接數(shù)據(jù)庫的標準方法。JDBC對Java程序員而言是API,對實現(xiàn)與數(shù)據(jù)庫連接的效勞提供商而言是接口模型。作為API,JDBC為程序開發(fā)提供標準的接口,并為數(shù)據(jù)庫廠商及第三方中間件廠商實現(xiàn)與數(shù)據(jù)庫的連接提供了標準方法。JDBC使用已有的SQL標準并支持與其它數(shù)據(jù)庫連接標準。JDBC實現(xiàn)了所有這些面向標準的目標并且具有簡單、嚴格類型定義且高性能實現(xiàn)的接口。Java具有鞏固、平安、易于使用、易于理解和可從網(wǎng)絡上自動下載等特性,是編寫數(shù)據(jù)庫應用程序的杰出語言。所需要的只是Java應用程序與各種不同數(shù)據(jù)庫之間進行對話的方法。而JDBC正是作為此種用途的機制。JDBC擴展了Java的功能。Java和JDBC的結合使信息傳播變得容易和經(jīng)濟。企業(yè)可繼續(xù)使用它們安裝好的數(shù)據(jù)庫,并能便捷地存取信息,即使這些信息是儲存在不同數(shù)據(jù)庫管理系統(tǒng)上。新程序的開發(fā)期很短。安裝和版本控制將大為簡化。程序員可只編寫一遍應用程序或只更新一次,然后將它放到效勞器上,隨后任何人就都可得到最新版本的應用程序[15]。簡單地說,JDBC可做三件事:與數(shù)據(jù)庫建立連接、發(fā)送操作數(shù)據(jù)庫的語句并處理結果。2.6開發(fā)工具介紹在開發(fā)過程中主要用到Eclipse、MySQL數(shù)據(jù)庫和MicrosoftOfficeVisio等工具,下面對這些開發(fā)工具做一下詳細介紹。Eclipse簡介Eclipse最初由OTI和IBM兩家公司的IDE產(chǎn)品開發(fā)組創(chuàng)立,起始于1999年4月。IBM提供了最初的Eclipse代碼根底。目前由IBM牽頭,圍繞著Eclipse工程已經(jīng)開展成為了一個龐大的Eclipse聯(lián)盟。Eclipse是一個開發(fā)源碼工程,它其實是VisualAgeforJava的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其開放源碼,任何人都可以免費得到,并可以在此根底上開發(fā)各自的插件,因此越來越受人們關注[16]。Eclipse的本身只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。Eclipse最初主要用來Java語言開發(fā),但是目前也可以作為其他計算機語言比方C++和Python的開發(fā)工具。雖然大多數(shù)用戶很樂于將Eclipse當作IDE來使用,但Eclipse的目標不僅限于此。Eclipse還包括插件開發(fā)環(huán)境,這個組件主要針對希望擴展Eclipse的軟件開發(fā)人員,因為它允許他們構建與Eclipse環(huán)境無縫集成的工具。由于Eclipse中的每樣東西都是插件,對于給Eclipse提供插件,以及給用戶提供一致和統(tǒng)一的集成開發(fā)環(huán)境而言,所有工具開發(fā)人員都具有同等的發(fā)揮場所。Eclipse主要特點:1.增加了WindowBuilder,一個流行的Eclipse開發(fā)GUI構建器,用戶需要以安裝插件的形式獲得此功能。2.EclipseMarket,用戶可以在線獲取應用市場上種類繁多的Eclipse插件(包括免費的和收費的),相比原來的Installnewsoftware(現(xiàn)在仍然存在并可用),更加直接和便捷。3.Xtext2.0使得它更容易創(chuàng)立領域特定語言。4.EGit1.0提供Git版本控制系統(tǒng)的緊密集成。5.更好地與Maven整合,包括啟動Maven的構建和維護pom文件。6.Jubula提供Java和HTML的自動化GUI測試功能。MySQL簡介MySQL是一個小型關系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQLAB公司。在2023年1月16號被Sun公司收購。而2023年,SUN又被Oracle收購。MySQL是一種關聯(lián)數(shù)據(jù)庫管理系統(tǒng),關聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內。這樣就增加了速度并提高了靈活性。MySQL的SQL“結構化查詢語言〞。SQL是用于訪問數(shù)據(jù)庫的最常用標準化語言。MySQL軟件采用了GPL(GNU通用公共許可證)。由于其體積小、速度快、總體擁有本錢低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有本錢而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫[17]。MySQL數(shù)據(jù)庫還有以下特點:1.使用C和C++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性。2.支持Linux、MacOS、Solaris、Windows等多種操作系統(tǒng)。3.為多種編程語言提供了API。這些編程語言包括C、C++、Java、PHP等。4.支持多線程,充分利用CPU資源。5.優(yōu)化的SQL查詢算法,有效地提高查詢速度。6.既能夠作為一個單獨的應用程序應用在客戶端效勞器網(wǎng)絡環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中提供多語言支持,常見的編碼如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。7.提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑。8.提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫操作的管理工具。9.可以處理擁有上千萬條記錄的大型數(shù)據(jù)庫。10.支持多種存儲引擎。Visio簡介MicrosoftOfficeVisio是微軟公司出品的一款的軟件,它有助于IT和商務專業(yè)人員輕松地可視化、分析和交流復雜信息。它能夠將難以理解的復雜文本和表格轉換為一目了然的Visio圖。該軟件通過創(chuàng)立與數(shù)據(jù)相關的Visio圖來顯示數(shù)據(jù),這些圖易于刷新,并能夠顯著提高生產(chǎn)率。使用OfficeVisio中的各種圖表了解、操作和共享企業(yè)內組織系統(tǒng)、資源和流程的有關信息[18]。雖然Visio是繪制流程圖使用率最高的軟件之一,但也有自己的一些缺乏。所以,結合實際情況選擇適宜的替代工具不失為一種明智的選擇。。2.7本章小結本章對系統(tǒng)所應用的技術進行描述,首先對系統(tǒng)所使用的模型進行了描述,對兩種模型進行了比照。接著對系統(tǒng)所使用的協(xié)議進行描述,闡述了各自的優(yōu)缺點。接著對系統(tǒng)所用到的技術進行描述。以便于查找相關資料,掌握相關技術。3對Socket通信需求分析根據(jù)前面所研究和分析的兩種通信模型及關鍵技術,本章將這些技術同系統(tǒng)的需求聯(lián)系起來,提出了系統(tǒng)的總體結構和工作流程。系統(tǒng)采用基于TCP/IP協(xié)議之上的C/S與P2P混合結構,即客戶端與效勞器之間的C/S通信結構和客戶端之間的P2P通信結構的結合。系統(tǒng)的工作流程分為效勞器端和客戶端工作流程。3.1即時通信系統(tǒng)總體需求即時通信系統(tǒng)主要用于實現(xiàn)政府機構、企業(yè)單位、社區(qū)生活的網(wǎng)絡化,促使政府機構、企業(yè)單位、社區(qū)信息文件即時發(fā)布和快速傳達。即時通信系統(tǒng)以“先進合理的應用理念〞、“高效率的通信效勞〞,為用戶提供了一套快捷的即時信息交流和辦公的平臺,以增強企事業(yè)單位內部的信息交流,解決其內部信息公告、信息交流、文件傳送等問題,降低溝通本錢,提高單位的工作效率,為各企事業(yè)單位提供方便、快捷的即時通信效勞[19]。3.2系統(tǒng)功能描述本系統(tǒng)主要實現(xiàn)點對點的私聊,多人群聊,發(fā)送網(wǎng)絡圖片,即時發(fā)送文件,歷史記錄的保存等功能。同時保證數(shù)據(jù)即時快速的傳遞。表3.1所示。表3.1系統(tǒng)功能表文本通信點對點會話通信,點對多點的消息和通知群發(fā),信息存儲等功能文件傳輸效勞器共享文件查詢,客戶端上傳文件,客戶端下載文件等歷史記錄保存對用戶的通話記錄進行管理3.3系統(tǒng)協(xié)議的選定系統(tǒng)的傳輸協(xié)議可以采用TCP與UDP兩種協(xié)議。由于本設計中信息的交互在效勞器與客戶機、客戶機與客戶機之間進行,對效勞器與客戶機的信息傳輸可靠性要求比擬高,因此通過TCP來實現(xiàn),而客戶機與客戶機之間要求信息傳輸效率高,通信協(xié)議就可采用UDP協(xié)議。在本系統(tǒng)的設計中,協(xié)議選擇既有TCP協(xié)議也有UDP協(xié)議,系統(tǒng)中的C/S模式采用TCP協(xié)議,P2P模式采用UDP協(xié)議。由于文件傳輸局部需要保證文件的準確無誤的傳送,因此在客戶機與客戶機之間采用TCP協(xié)議來實現(xiàn)。3.4系統(tǒng)設計性能分析作為企(事)業(yè)單位內部員工簡便的辦公和溝通平臺,企業(yè)即時通信系統(tǒng)需要保證數(shù)據(jù)通信的即時性以及通信過程和信息存儲的平安性[20],為企事業(yè)單位的使用者提供信息平安保障,同時減少系統(tǒng)資源的消耗,保證系統(tǒng)運行的低故障率。這些都是一個有實用價值的軟件必須具備的性能,具體如以下四點所述:1.數(shù)據(jù)通信完整與可靠性:即時通信即用戶間能實時發(fā)送和接收各種信息,包括文本通信和文件傳輸,確保數(shù)據(jù)的可到達性、確保數(shù)據(jù)解讀的正確性,防止數(shù)據(jù)喪失或數(shù)據(jù)錯位,從而保證消息傳送的可靠性。2.通信效率和公平性:這主要表達在效勞器端。效勞器需要同時處理所有用戶發(fā)送的各類信息,并且完成數(shù)據(jù)庫存儲、讀取、更新等操作;還需要采用適當方法提高效勞器接收、解讀、處理和發(fā)送數(shù)據(jù)的效率,在指定時間內完成需要的通信量,提高系統(tǒng)的即時通信性能,同時保證數(shù)據(jù)處理的公平性,保證各客戶端的信息能夠被及時響應和處理。3.系統(tǒng)可控性:系統(tǒng)可控性是指系統(tǒng)運行期間完成數(shù)據(jù)存儲、數(shù)據(jù)庫備份、系統(tǒng)故障恢復等任務的性能,包括用戶注冊管理、登錄管理、客戶端運行過程中監(jiān)控等模塊的設計。防止重要數(shù)據(jù)的喪失或被篡改,提高系統(tǒng)的運行可靠性,增強系統(tǒng)使用者的信心。3.5本章小結本章主要對系統(tǒng)的總體設計及功能模塊進行描述,首先對系統(tǒng)的總體需求進行分析,然后介紹各功能模塊,最后對客戶端,和效勞器的工作流程進行了描述,并畫出流程圖,為開發(fā)系統(tǒng)做好準備。4實現(xiàn)Socket通信的方案和關鍵模塊的設計4.1系統(tǒng)總體結構的描述即時通信系統(tǒng)是在某一個或假設干個企事業(yè)單位內部使用的即時溝通和辦公通信的工具和平臺,具有即時通信、用戶群特定等特點。本系統(tǒng)采用的是三層式的C/S構架來保證網(wǎng)絡通信的機制:客戶端、效勞器端,效勞數(shù)據(jù)庫??蛻舳死肨CP通信協(xié)議,并通過基于UDP通信協(xié)議的P2P技術與其他客戶端進行交流;效勞器處理客戶端發(fā)送來的信息,并利用TCP通信協(xié)議將信息反應回客戶端以及保存用戶的在線與離線狀態(tài);效勞數(shù)據(jù)庫主要負責用戶注冊信息保存,用戶聊天記錄的保存。其系統(tǒng)總體框架如圖4.1所示。數(shù)據(jù)庫服數(shù)據(jù)庫服務器JDBCC/S(TCP) C/S(TCP)客戶端客戶端C/S(TCP)客戶端客戶端 P2P(UDP) P2P(UDP) 客戶端客戶端 P2P(UDP)圖4.1即時通信系統(tǒng)框架圖基于Socket的局域網(wǎng)即時通信系統(tǒng)系統(tǒng)構架如圖4.2、圖4.3所示。點對點私聊點對點私聊多人群聊多人群聊效勞器用戶效勞器用戶文件傳輸文件傳輸歷史記錄保存歷史記錄保存圖4.2即時通信系統(tǒng)框架圖(C/S)文字通信文字通信用戶用戶用戶用戶文字傳輸文字傳輸圖4.3即時通信系統(tǒng)框架圖(P2P)系統(tǒng)功能模塊設計根據(jù)企業(yè)內部溝通的需要,以及從實際出發(fā),系統(tǒng)功能模塊圖如圖4.4所示:1.效勞器功能(1)部門和用戶管理功能模塊在企業(yè)內部溝通中必須得了解企業(yè)內部的組織架構,這個模塊就是系統(tǒng)管理員在按照企業(yè)實際組織結構,創(chuàng)立了各級部門并輸入部門信息,然后根據(jù)部門再創(chuàng)立用戶信息,用戶不需要自由的添加,最終完成企業(yè)組織的搭建;(2)用戶登錄處理模塊此模塊主要是進行登錄驗證,如果驗證通過,效勞器會將數(shù)據(jù)庫中的用戶狀態(tài)改為在線,并通知其他在線用戶;(3)用戶狀態(tài)通知模塊用戶進行狀態(tài)檢測,好友在線,在好友列表中顯示,如果好友不在列表中,即時通信功能模塊即時通信功能模塊客戶端客戶端效勞器效勞器用戶下線模塊歷史記錄查詢模塊文本通信模塊文本通信模塊用戶登錄與注冊模塊用戶下線模塊歷史記錄查詢模塊文本通信模塊文本通信模塊用戶登錄與注冊模塊用戶文件轉模塊發(fā)用戶下線處理模塊用戶消息轉發(fā)模塊用戶狀態(tài)通知模塊用戶登錄管理模塊部門用戶管理模塊用戶文件轉模塊發(fā)用戶下線處理模塊用戶消息轉發(fā)模塊用戶狀態(tài)通知模塊用戶登錄管理模塊部門用戶管理模塊圖圖4.4系統(tǒng)功能模塊圖用戶狀態(tài)為離線;(4)用戶消息、文件轉發(fā)用于發(fā)給離線用戶的消息或文件;(5)用戶下線處理模塊用戶下線,斷開連接,修改數(shù)據(jù)庫中的用戶狀態(tài)并通知其他用戶;2.客戶端功能客戶端提供用戶友好操作界面,負責發(fā)出請求和接收結果,主要功能有用戶登錄、文字通信、文件傳輸、歷史記錄保存、好友管理等,通過底層協(xié)議傳輸數(shù)據(jù),并在協(xié)議解析模塊解析信息。4.2效勞器端工作流程效勞器運行后,開啟效勞,那么效勞器開始偵聽用戶請求,如有信息發(fā)送過來,效勞器首先發(fā)送回確認信息,然后,建立一個線程,處理接收到的數(shù)據(jù)。在線程里,按照接收到數(shù)據(jù)的類別(用特殊字符來區(qū)分),進行相應的處理,如有需要,會向用戶發(fā)送處理的結果,處理結束后,線程就結束了。這樣,可以實時接收每個用戶的請求,不會因為處理一個用戶的請求,而忽略了其它用戶。效勞器端即時通信工作流程如圖4.5所示。開始開始啟動效勞啟動效勞監(jiān)聽客戶端連接監(jiān)聽客戶端連接返回返回 N 用戶連接請求用戶連接請求 N 登錄成功登錄成功用戶登錄Y用戶登錄 Y 建立合法連接,顯示用戶上線通知建立合法連接,顯示用戶上線通知響應用戶發(fā)出的請求響應用戶發(fā)出的請求對方上線 Y 對方上線文本通信保存到本地連接 N文本通信保存到本地連接 Y建立連接文本傳輸 N 建立連接文本傳輸 Y轉發(fā)給對方轉發(fā)給對方完成文件傳輸用戶退出N完成文件傳輸用戶退出 N保存文件用戶下線通知Y保存文件用戶下線通知退出退出圖4.5效勞器端工作流程客戶端工作流程客戶端即時通信流程如圖4.6所示。開始開始顯示登錄界面顯示登錄界面 N 驗證成功建立連接驗證成功建立連接結束結束 Y顯示主界面顯示主界面文件傳輸添加刪除好友文件傳輸文件傳輸添加刪除好友文件傳輸向效勞器發(fā)送請求向效勞器發(fā)送請求效勞器接受請求并處理效勞器接受請求并處理實現(xiàn)用戶請求實現(xiàn)用戶請求客戶端客戶端退出 N Y結束結束圖4.6客戶端通信流程圖客戶端的即時通信工作流程可作如下描述:1.啟動客戶端,首先進行注冊,注冊成功2.顯示登錄主界面,輸入賬號和密碼,用戶開始登錄;3.客戶端開始在線偵聽,用戶可以在主界面進行某種操作;4.用戶可以發(fā)送各種聊天信息,文件傳輸請求等應用請求;5.請求發(fā)出后自動等待效勞器返回的數(shù)據(jù),解讀該數(shù)據(jù)并判定請求的結果;6.執(zhí)行結果,并保存處理信息至本地鏈接(假設干文件組成);7.在客戶端退出前循環(huán)執(zhí)行用戶的各種操作,并發(fā)送各種請求;8.客戶端退出那么斷開該連接。4.3總體實現(xiàn)方案和類的設計1.系統(tǒng)總體實現(xiàn)方案系統(tǒng)將采用C/S方式設計,效勞器主要為客戶端效勞,通過響應客戶端的請求訪問數(shù)據(jù)庫,給用戶提供相應的信息,效勞器數(shù)據(jù)庫使用MySql做數(shù)據(jù)庫管理系統(tǒng)。信息交流的絕大局部功能都在系統(tǒng)的客戶端完成。客戶端主要功能都是基于P2P技術的,因此客戶端功能的實現(xiàn)主要就是如何建立P2P的連接,建立連接后就能輕松完成包括發(fā)送消息,文本交談,發(fā)送文件等功能。2.系統(tǒng)通信核心類類用于描述一組具有相同屬性、操作、關系和語義的對象[20]。其中主要包括消息類和類圖,基nnectio類ConThread,另外還有其它的10幾個類,分別用于各種類型的操作。(1)ConnectionThread該類是客戶端發(fā)送給效勞器消息,接收效勞器消息的類,也是客戶端眾多線程中的主線程(2)RegisterInfo和RegisterFrameRegisterFrame類用來生成注冊頁面,完成注冊界面相應的布局,RegisterInfo類用來生成填寫注冊信息界面,驗證注冊信息格式是否正確,如果不正確給出相應的提示信息(3)ChatF和ChatF1ChatF1類主要實現(xiàn)客戶端與客戶端點對點的私聊,實現(xiàn)文件傳輸,發(fā)送消息主要用函數(shù)sendMessage(),文件傳輸主要在actionPerformed()中實現(xiàn),ChatF類主要實現(xiàn)多人群聊發(fā)送消息也是用函數(shù)sendMessage()來實現(xiàn)(4)History該類主要用于歷史記錄讀取,關閉聊天窗口,如果歷史記錄為空給出提示信息(5)ListF主要用于生成在線好友列表(6)FindFriendFrame該類主要用于根據(jù)qq號查找好友,然后添加好友,實現(xiàn)通信(7)Dao該類用于實現(xiàn)效勞器與數(shù)據(jù)庫的連接,處理數(shù)據(jù)(8)Server該類是效勞器實現(xiàn)通信,與客戶端進行交互的類,用于接收客戶端的各種操作請求,處理相應的請求(每個請求由特殊字符來區(qū)分),響應請求,實現(xiàn)客戶端與客戶端,客戶端與效勞器實現(xiàn)通信。4.4關鍵模塊詳細設計與實現(xiàn)主要對各個功能模塊實現(xiàn)做具體的描述,加深對系統(tǒng)的認識。4.4.1利用Socket進行TCP連接Socket進行TCP網(wǎng)絡連接,是一種客戶/效勞器的連接類型,利用Socket的API進行連接的程序時序圖如圖4.7所示。TCP客戶端TCP效勞端TCP客戶端TCP效勞端Socket〔〕Socket〔〕Bind〔〕Bind〔〕Socket〔〕Listen〔〕Socket〔〕Listen〔〕Accept〔〕Accept〔〕等待客戶請求Connect〔〕等待客戶請求Connect〔〕Send〔〕Recv〔〕Send〔〕Recv〔〕Recv〔〕Send〔〕Recv〔〕Send〔〕CloseSocket〔〕CloseSocket〔〕CloseSocket〔〕CloseSocket〔〕圖4.7Socket的TCP連接時序圖1.流式套接字流式套接字可以將數(shù)據(jù)按順序無重復地發(fā)送到目的地,它提供的是一種可靠的面向連接的數(shù)據(jù)傳輸方式。不管是對單個的數(shù)據(jù)報,還是對數(shù)據(jù)包,流式套接字都提供了一種流式數(shù)據(jù)傳輸,是TCP傳輸協(xié)議的接口[12]。當用戶想發(fā)送大批量數(shù)據(jù)或想讓發(fā)送的數(shù)據(jù)按順序無重復地到達目的地時,使用流式套接字是最方便的。此外,在數(shù)據(jù)傳輸時,如果連接斷開,應用程序會被通知的。由于流式套接字用的是面向連接的協(xié)議,所以必須首先建立連接然后才能從數(shù)據(jù)流中讀出數(shù)據(jù),而不是從一個數(shù)據(jù)報或一個記錄讀出數(shù)據(jù)。流式套接字的效勞進程和客戶進程在通信前必須創(chuàng)立各自的套接字并建立連接,然后才能對相應的套接字進行“讀〞、“寫〞操作,實現(xiàn)數(shù)據(jù)傳輸。使用流式套接字時,用戶在發(fā)送、接收數(shù)據(jù)之前同樣必須首先建立連接,然后才能傳輸數(shù)據(jù),流式套接字編程模型的工作流程如圖4.7所示。首先,效勞器要創(chuàng)立一個用于監(jiān)聽的套接字,把它綁定到眾所周知的效勞器端口上,然后調用listen函數(shù)使它處于監(jiān)聽狀態(tài);客戶機在創(chuàng)立套接字后,即可調用connect函數(shù),請求與效勞器套接字連接;效勞器套接字在收到客戶機的連接請求后,調用accept函數(shù)來接收客戶機的連接請求,并創(chuàng)立另一個用于通信的套接字。用此套接字和客戶機上的套接字形成網(wǎng)絡通信管道的兩個端點,然后就可以在效勞器和客戶機之間進行數(shù)據(jù)傳輸了。效勞器上的監(jiān)聽套接字仍處于監(jiān)聽的狀態(tài),隨時準備接受其他客戶機的連接請求。傳輸結束后,客戶機調用closeSocket函數(shù)關閉套接字,效勞器也調用該函數(shù)關閉用于監(jiān)聽和通信的套接字,釋放資源。2.數(shù)據(jù)報套接字數(shù)據(jù)報套接字節(jié)提供了不可靠的、無連接的數(shù)據(jù)包通信方式。數(shù)據(jù)通過相互獨立的報文進行傳輸,是無序的,并且不保證報文的可靠、無過失。實際使用中,數(shù)據(jù)報套接字一般用于一些輕負載的局域網(wǎng)上的計算機之間的通信,同一個分組數(shù)據(jù)報可能不止一次地被發(fā)送,一般要等到接收方發(fā)回確認收到的消息才停止發(fā)送。對于在TCP/IP上實現(xiàn)的Socket,數(shù)據(jù)報套接字節(jié)使用UDP協(xié)議[9]。無連接的效勞器一般都是面向事務處理的,大多數(shù)的數(shù)據(jù)報套接字應用程序將使用一個事件序列來完成客戶應用程序和效勞器應用程序之間的通信,其編程過程相對流式套接字要簡單些如圖4.8所示。對于接收端(一般為效勞器端),先用Socket函數(shù)建立套接字,在通過bind函數(shù)把這個套接字和準備接收數(shù)據(jù)的IP地址信息綁定在一起,這和前面流套接字一樣,但不同的是它不必調用listen和accept,只需要等待接收數(shù)據(jù)。并且由于它是無連接的,因此可以接收網(wǎng)絡上任何一臺機器所發(fā)的數(shù)據(jù)包。圖4.8、圖4.9別為流式套接字和數(shù)據(jù)報套接字應用程序時序圖。Socket〔〕Socket〔〕Socket〔〕Socket〔〕Bind〔〕Bind〔〕Rendform()〔〕Rendform()〔〕Bind〔〕Bind〔〕等待客戶請求等待客戶請求效勞請求Send〔〕處理請求Send〔〕處理請求效勞響應Rendform()Send〔〕Rendform()Send〔〕Close〔〕Close()Close〔〕Close()圖4.8流式套接字圖Socket〔〕Socket〔〕Bind〔〕Bind〔〕Listen〔〕Listen〔〕Socket〔〕Socket〔〕Accept〔〕Accept〔〕Connect〔〕建立連接Connect〔〕等待客戶請求等待客戶請求Rend〔〕請求數(shù)據(jù)Write〔〕Rend〔〕Write〔〕應答數(shù)據(jù)Write〔〕Read〔〕Write〔〕Read〔〕Close〔〕Close〔〕Close〔〕Close〔〕圖4.9數(shù)據(jù)報套接字圖面向連接的Socket機制的模塊設計圖4.10是一個典型的面向連接的Socket通信機制的示意圖。它首先由效勞器建立Socket并將該Socket聯(lián)編到某個端口上,并進入監(jiān)聽狀態(tài),同時監(jiān)聽是否有與自己端口相對應的連接請求。連接是由客戶發(fā)出的,客戶方在建立自己的Socket后,向效勞器發(fā)出連接請求,效勞器在檢測到連接后接受,這樣就建立了一個完整的Socket連接。從圖4.10可以看出,效勞器方必須首先啟動,然后守候在某一個端口上監(jiān)聽客戶方的連接請求,一旦連接建立,就可以像普通流機制那樣進行讀/寫,只需調用close〔〕即可結束Socket連接。通過該方式建立起來的C/S程序即可實現(xiàn)一臺效勞器端和一臺客戶端的通信。效勞器端聯(lián)編到某一個端口聯(lián)編到某一個端口調用bind創(chuàng)立效勞器端Sock〔〕創(chuàng)立效勞器端Sock〔〕客戶端創(chuàng)立服客戶端Socket〔〕監(jiān)聽來自客戶端的連接請求,調用listen創(chuàng)立服客戶端Socket〔〕監(jiān)聽來自客戶端的連接請求,調用listen向效勞器端發(fā)送連接請求調用connect〔〕阻塞,等待客戶端連接請求調用accept〔〕向效勞器端發(fā)送連接請求調用connect〔〕阻塞,等待客戶端連接請求調用accept〔〕 效勞請求接受來自于客戶的請求數(shù)據(jù),調用read〔〕發(fā)送請求數(shù)據(jù)調用接受來自于客戶的請求數(shù)據(jù),調用read〔〕發(fā)送請求數(shù)據(jù)調用write〔〕數(shù)據(jù)請求數(shù)據(jù)數(shù)據(jù)請求數(shù)據(jù)接受響應數(shù)據(jù)返回相應的數(shù)據(jù)調用write〔〕接受響應數(shù)據(jù)返回相應的數(shù)據(jù)調用write〔〕圖4-1基于連接的效勞端、客戶端流程圖圖4.104.5文件傳輸模塊1.文件傳輸?shù)膶崿F(xiàn)文件傳輸是通過使用多線程、套接字、自定義的傳輸命令等技巧,實現(xiàn)了多個用戶之間文件傳輸,并可以在傳輸過程中進行簡單交互的功能。文件傳輸除了能實現(xiàn)文件的接收與發(fā)送的根本功能外,還需要考慮以下方面:(1)文件在傳輸過程中應不影響用戶界面的操作;(2)在傳輸文件前,發(fā)送方應先發(fā)送請求,接收方可以同意或拒絕文件發(fā)送,接收方同意后才能進行文件傳輸;(3)在文件在傳輸過程中,可以顯示文件的信息,如文件名、保存路徑、文件大小;(4)文件在傳輸過程中接收方和發(fā)送方都可以取消該文件傳輸過程;(5)一個用戶可以同時和多個用戶進行文件傳輸,而且每兩個用戶之間,可以同時接收或發(fā)送多個文件,接收和發(fā)送可以同時進行。本系統(tǒng)文件傳輸?shù)膶崿F(xiàn)主要由ClientTest、ClientSocket、Jprocess和ServerTest類實現(xiàn)。其中ServerTest類主要用于發(fā)送文件,ClientTest類用于計算文件的長度、接收文件,Jprocess類用于生成文件發(fā)送的進度條,文件傳輸功能實現(xiàn)如圖4.11所示。圖4.11文件傳輸功能實現(xiàn)圖2.文件傳輸?shù)膱?zhí)行流程首先是文件發(fā)送端與接收端啟用發(fā)送線程與監(jiān)聽線程,發(fā)送端向接收端提出連接請求,接收端收到請求后啟用接收線程,接收端在收到文件屬性后,發(fā)送同意接收消息,雙方就可以開始發(fā)送與接收文件,直到發(fā)送完畢。4.5本章小結本章首先進行了對系統(tǒng)的總體實現(xiàn)方案和類的設計進行了研究,研究了它所用到的協(xié)議,其次說明了各類的功能,再說明了系統(tǒng)如何實現(xiàn)各個功能,最后概述了系統(tǒng)的詳細設計和具體實現(xiàn)方法,畫出了各局部的圖示。5對程序進行調試與測試,并對結果進行分析5.1Socket通信的應用結合上面的Socket通信的根本原理,下面用java實現(xiàn)了流式Socket通信多用戶聊天系統(tǒng).從總體來看,這是一個支持多Client的Socket通信的聊天系統(tǒng),根據(jù)設計過程中效勞器和客戶連接的方式,有兩種解決的方案;方案一:在一臺計算機上啟動多個效勞器程序,而指定效勞器監(jiān)聽端口號不同,一個效勞器對應一個客戶機。方案二:將效勞器寫成多線程的,不同的處理線程為不同的客戶效勞.主線程只負責循環(huán)等待,處理線程負責網(wǎng)絡連接,接收客戶輸入的信息??紤]到第一種方案,如果要啟動多個客戶的話,要占用的監(jiān)聽端口號多,通信比第二種方案更不方便,所以下面我是采用第二種方案來實現(xiàn)的。5.2聊天效勞器端聊天效勞端的主要任務有兩個:一是監(jiān)聽某端口,建立與客戶的Socket連接,處理一個客戶的連接后,能很快再進入監(jiān)聽狀態(tài);二是處理與客戶的通信,由于聊天是客戶之間進行,所以效勞器的職責是將客戶發(fā)送的消息轉發(fā)給其他客戶。為了實現(xiàn)兩個目標,必須設法將任務分開,可以借助多線程技術,在效勞方為每個客戶連接建立一個通信線程,通信線程負責接受客戶的消息并將消息轉發(fā)給其他客戶。這樣主程序的任務就簡單化,循環(huán)監(jiān)聽客戶連接,每個客戶連接成功后,創(chuàng)立一個通信線程,并將與Socket對應的輸入輸出流傳給該線程。程序代碼如下:public〔lasstalkserver{publicstaticClient]allclient=nc}vClient[20};//存放所有通信線程publicstaticintclientnum=0;//連接客戶數(shù)publicstaticvoidmain(Stringargs}]){try{ServerSockets=nrwServerSocket(8000);//建立監(jiān)聽效勞while(true){Sockets1=s.accept();//等待客戶連接DataOutputStream<los=nc}vDataOutputStream(s1.get0utputStream());DatalnputStreamdin=newDatalnputStream(s1.getInputStream());allclient}〔lientnum}=nc}vClient(dientnum,dos,din);allclient}clientnum}.start();//創(chuàng)立與客戶對應的通信線〔lientnum++;}}〔atch(IOExceptione){}}}〔lassClientextendsThread{intid;//客戶標識DataOutputStream<los;//去往客戶的輸出流DatalnputStreamdin;//來自客戶的輸入流publicClient(inti<1,DataOutputStream<los,DatalnputStreamdin){this.i<1=i<1;this.<los=<los;this.<lin=<lin;}publicvoidrun(){while(true)//循環(huán)讀取客戶數(shù)據(jù)轉發(fā)給其他客戶(try(intm=talks。二.clientnum;//客戶數(shù)Stringmessage=“第〞+(id+1)+“個客戶發(fā)言:〞+din.readUTF();//讀客戶數(shù)據(jù),無數(shù)據(jù)時線程掛起。for(inti=0;i<m;i++){talks。二.alldient}i}.<los.writeUTF(metesage);//轉發(fā)給其他戶}}〔atch(IOExceptione){}}}}每個通信線程均在循環(huán)檢測是否本線程對應的客戶有數(shù)據(jù)發(fā)送過來,一旦接收到數(shù)據(jù)就通過循環(huán)將數(shù)據(jù)發(fā)送到所有客戶(包括自己)的Socket通道。5.3聊天客戶端客戶端的職責也有兩個:一是能提供一個圖形界面實現(xiàn)聊天信息的輸入和顯示,其中包括處理用戶輸入事件;二是要隨時接收來自其他客戶的信息并顯示出來.因此,在客戶端也采用多線程實現(xiàn),應用程序主線程負責圖形界面的輸入處理,而接收消息線程負責讀取其它客戶發(fā)來的數(shù)據(jù)。每個用戶首先向效勞器請求連接后,才能與其他客戶進行連接.所以對應效勞器端端口等待連接,在客戶端要請求效勞器連接,也即先實例化Socket類,傳入主機的ip地址和效勞器端口號。Sockets1=newSocket(“LBG",8000);主機接收到請求后,建立連接,效勞端產(chǎn)生一個Socket實例,同該客戶端建立通信,效勞器端和客戶端同時翻開輸入和輸出流進行數(shù)據(jù)的傳輸。DataInputStre}n<lis=newDataInputStre}n(s1.gelInputStream());finalDataOutputStrearn<los=newDataOutputStrearn(s1.get0utputStream());當客戶要發(fā)送數(shù)據(jù)的時候,先將數(shù)據(jù)發(fā)送到效勞器,然后由效勞器轉發(fā)給其他正在檢測的用戶,下面代碼就是主要負責向其他客戶發(fā)送數(shù)據(jù)。publicvoidactionPerformed(ActionEvente){try{<los.writeUTF(""+input.getText());//發(fā)送數(shù)據(jù)}〔itch(IOExceptionz){}}});客戶端必須時刻檢測效勞器端有無數(shù)據(jù)數(shù)據(jù)發(fā)出,如果檢測到其他客戶發(fā)送了消息后,接收消息線程讀取網(wǎng)絡消息,顯示在聊天界面中。try{Stringstr=newString(dis.readUTF());//讀取其他客戶經(jīng)效勞器轉發(fā)的消息<Iisplayarea.append(str+"/n");//將消息添加到文本域顯示}〔atch(IOExceptione){}5.4聊天系統(tǒng)的運行界面圖5.1是聊天系統(tǒng)的運行界面,其中第一個是效勞器,其他是三個不同的客戶。圖5.1系統(tǒng)運行界面5.5本章小結這是一個流式Socket通信的應用,實現(xiàn)了網(wǎng)上多用戶聊天,在系統(tǒng)中還有許多方面值得改良,例如:如何修改效勞方,使用戶自己發(fā)送的消息不顯示在自己的文本域中;增加一個用戶名輸入界面,用戶輸入身份后再進入聊天界面;在客戶方顯示用戶列表,可以選擇將信息發(fā)送給哪些用戶.這些方面得到改良后就可以極大地提高其應用價值。結論本文主要研究和實現(xiàn)了一種符合當前學校實際應用需求的即時通信系統(tǒng)。課題研究了兩層C/S模型和P2P模型混合設計的模式,不同類型的效勞采用不同的通信模型,有效減輕效勞器負擔,提高了網(wǎng)絡利用率。該系統(tǒng)按照面向對象方法設計并封裝了大量的類,并且大量采用了多線程技術,這些方法和技術有效增強了效勞器的并發(fā)處理能力,同時也有利于系統(tǒng)開發(fā)與維護工作的開展。具體工作如下1.研究了即時通信技術的開展歷程,以及主流即時通信系統(tǒng)采用的通信模式和通信協(xié)議;目前主要的即時通信模式包括P2P和C/S模式,主要的即時通信通用協(xié)議包括了基于TCP協(xié)議和基于UDP協(xié)議及各大廠商各自定義私有協(xié)議;分析了主流信息系統(tǒng)在應用環(huán)境中存在的缺乏。2.分析了一個P2P和C/S相結合的混合通信模型。使用TCP協(xié)議與UDP協(xié)議分別實現(xiàn)了客戶機與效勞器之問的C/S通信模型以及客戶機與客戶機之間的P2P通信模型,有效減輕了效勞器的負擔。3.設計并實現(xiàn)了一個即時通信系統(tǒng),包括了即時通信效勞端和即時通信客戶端;即時通信效勞器主要實現(xiàn)部門與用戶信息管理、接收客戶端登錄、下線、離線的文本信息、向客戶端發(fā)送狀態(tài)通知、離線的文本信息等功能;即時通信客戶端主要實現(xiàn)登錄效勞器、文本、文件通信等功能。4.通過測試環(huán)境和實際網(wǎng)絡環(huán)境,對即時通信系統(tǒng)進行了功能測試,驗證了即時通信系統(tǒng)的有效性、高效性。參考文獻[1]佘其炯.數(shù)字通信世界.即時通信系統(tǒng)的現(xiàn)狀與開展趨勢[J],2007,06:41-43[2]姚翌.騰訊通RTX3.3發(fā)布企業(yè)互聯(lián)與集成技術世界領先[J].計算機與網(wǎng)絡2004,07(30):15-16[3]李遠杰等.主流即時通軟件通信協(xié)議分析術[J].計算機應用研究,2005,07(15):4-6[4]王宇,盧昱.計算機工程.信息網(wǎng)絡的通信平安控制[J],2006(32卷、12期):173-175[5]康曉寧.讓溝通隨時進行——中建國際企業(yè)即時通信應用實例[J].微電腦世界,2004,04:14-16[6]王珊,薩師煊的數(shù)據(jù)庫系統(tǒng)概論〔第四版〕[M].北京高等教育出版社,2007[7]嚴俊海.java程序設計教程.清華大學出版社,2007[8](美)DouglasE.Comer,DavidL.Stevens著.TCP/IP網(wǎng)絡互聯(lián)技術卷3,客戶.效勞器編程與應用(Windows套接字版)[M].北京:清華大學出版社,2004,6:1.300[9]何進,謝松巍.基于Socket的TCP/IP網(wǎng)絡通訊模式研究[J].計算機應用研究;2001年08期[10]張海藩.軟件工程導論[M].北京清華大學出版社,2023[11]周坤,傅德勝.計算機工程與設計.基于WindowsSocket的網(wǎng)絡數(shù)據(jù)傳輸及其平安[J],2007(28):5381-5388[12]謝希仁.計算機網(wǎng)絡(第五版)[M].北京電子工業(yè)出版社,2023.184-188[13]耿祥議,張躍平.Java2實用教程[M].清華大學出版社,2023,10:226-411[14]戴大蒙.基于非阻塞式Winsock的多線程網(wǎng)絡通信機制[J].計算機工程,2006,6:25-27[15]JDBC-百度百科.://baike.baidu/view/2737974.htm.2011-8-15[16]Eclipse-百度百科.://baike.baidu/view/23576.htm.2011-10-26[17]MySQl-百度百科.://baike.baidu/view/24816.htm.2011-8-15[18]Visio-百度百科.://baike.baidu/view/18289.htm.2011-10-18[19]康曉寧.讓溝通隨時進行——中建國際企業(yè)即時通信應用實例[J].微電腦世界,2004,(4):14-16[20]聶元銘,丘平編著.網(wǎng)絡信息平安技術[M].北京:科學出版社,2001,〔02〕:1-200[21][美]沙赫(SchachS.R.)著.面向對象與經(jīng)典軟件工程[M].北京:機械工業(yè)出版社,2002,10:1-103[22]胡荷芬,張帆,高斐.UML系統(tǒng)建模根底教程.清華大學出版社,2023,(05)致謝感謝沈陽理工大學對我?guī)啄甑呐囵B(yǎng)!本課題在論文的寫作過程中,得到了教授的悉心指導。屢次詢問開發(fā)進程,幫助我開拓開發(fā)思路,并給予熱忱鼓勵。趙運弢副教授嚴謹?shù)闹螌W態(tài)度,樂觀隨和的處事態(tài)度,不僅教我如何設計和寫作,更重要的是教會了我為人處事的態(tài)度和方法,雖歷時僅數(shù)月,卻讓我終生受益。臨近畢業(yè),特別感謝我的輔導員解穎老師四年來對我的關心和幫助,她年輕的朝氣和踏踏實實的作風,不僅激發(fā)我更加勤奮好學,而且從多方面給我?guī)矸e極的影響。其次是感謝父母對我的養(yǎng)育,父母讓我接受良好的教育,不僅讓我學會了為人處事的道理還讓我學到了珍貴的知識,為我踏入社會打下了根底。最后是感謝我的同學對我的支持和幫助。論文的完成,離不開老師和同學們的幫助,對于我來說,這是一筆值得我珍惜的巨大財富。忠心的感謝所有教過和未教過我的老師們,謝謝你們對我們的付出,我祝愿每位老師在今后的工作中一帆風順,生活幸福。附錄A英語原文AdvancesincomputernetworkcommunicationtechnologyThe1990swastherapiddevelopmentofinformationandcommunicationtechnologyera.Intheexchangeoftechnology,digitalanddatacommunicationsonthebasisoftechnologicaldevelopment,computernetworktechnologyandinformationcommunicationtechnologycloselyintegratedrelationshipfurther,informationandcommunicationtechnologythankstocomputertechnologyandthelatestachievementsinmicroelectronics,hasbeenanunprecedenteddevelopment.Thedevelopmentofdigitalsignaltechnologytomaketraditionalanalogsignalstodigitalcommunicationstechnologychanges.Currently,data,text,voice,imagesandvideoandothermultimediainformationcommunicationhasbecomeareality,IntegratedServicesDigitalNetwork((ISDN)communicationservicesintherapidlydeveloping.Circuitswitching,packetswitching,usingawiredorwirelesschannels,includingridgepaircable,coaxialcable,fiberopticcable,terrestrialmicrowaveandsatellitechannelcombinedwitheachother,weavingavarietyofcommunicationnetworks,coveringfixedandmobilecommunications,acrosstimeandspaceconstraints,fornewscommunication,culture,sciencecommunication,informationconsultingservices,officemanagementaswellashumanwork,productionandlifeinallaspectsofinformationandcommunicationtocreateunprecedentedconditions,gaverisetoanewtechnologicallevel.

Incomputernetworksandinformationandcommunicationtechnologywithgeneralizedevolutionprocess,themainroleistocomputernetworkcommunication.Articleoutlinessomeofthefollowingelements:1computernetworkcommunicationtechnologydevelopmentinfourmainstages;2computerLANandWANtechnologydevelopment;3ATMtransmissiontechnology;4ATMLANemulationtechnology;5computernetworkcommunicationsequipmenttechnologydevelopment.Acomputernetworkcommunication.

Thefourmainstagesoftechnologicaldevelopmentcomputernetworkcommunicationhasundergonethreemainstages,isnowenteringitsfourthstageineachofthesestagesbyastageofgenerationofcomputerhardware,devicedriversandapplications,andeachstagegreatlyexpandedthecomputerapplications.1.1Thefirstphase(1965to1975).

Itisdominatedbylargecentralmainframecomputingperiod,whichisgeneratedduringaseriesofdedicatednetworkarchitecture(typicallysuchasIBM'sSNA).Itprovidesthehostandterm

溫馨提示

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

評論

0/150

提交評論