基于SOCKET網(wǎng)絡聊天系統(tǒng)畢業(yè)論文_第1頁
基于SOCKET網(wǎng)絡聊天系統(tǒng)畢業(yè)論文_第2頁
基于SOCKET網(wǎng)絡聊天系統(tǒng)畢業(yè)論文_第3頁
基于SOCKET網(wǎng)絡聊天系統(tǒng)畢業(yè)論文_第4頁
基于SOCKET網(wǎng)絡聊天系統(tǒng)畢業(yè)論文_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

編號本科生畢業(yè)設(shè)計論文基于SOCKET的網(wǎng)絡聊天系統(tǒng)開發(fā)與設(shè)計DEVELOPMENTANDDESIGNOFNETWORKCHATSYSTEMBASEDONTHESOCKET學生姓名專業(yè)計算機科學與技術(shù)學號指導教師分院信息工程分院2015年6月長春理工大學光電信息學院畢業(yè)設(shè)計1摘要在信息技術(shù)高速發(fā)展的今天,INTERNET技術(shù)的發(fā)展已經(jīng)深刻的改變了人們的生活。摒棄了原始的通信方式,開發(fā)新的通信方式是必不可少的,人們希望用更方便、更廉價、更快捷的通信方式。這時就需要開發(fā)一套網(wǎng)絡聊天系統(tǒng),本課題研究的是基于SOCKET通訊協(xié)議的網(wǎng)絡聊天系統(tǒng)的開發(fā)與設(shè)計。本次開發(fā)使用的是JAVA語言,文中介紹了本系統(tǒng)的結(jié)構(gòu)和功能,最終實現(xiàn)可以私聊、群聊、文件傳送的網(wǎng)絡聊天系統(tǒng)。本次設(shè)計主要以SOCKET網(wǎng)絡通訊作為基礎(chǔ),采用SWING來實現(xiàn)的圖形界面。關(guān)鍵詞JAVASOCKET通訊協(xié)議SWING長春理工大學光電信息學院畢業(yè)設(shè)計2ABSTRACTINTHEINFORMATIONTECHNOLOGYRAPIDDEVELOPMENTTODAY,THEDEVELOPMENTOFINTERNETTECHNOLOGYHASPROFOUNDLYCHANGEDPEOPLESLIFEABANDONEDTHEORIGINALWAYOFCOMMUNICATION,THEDEVELOPMENTOFNEWCOMMUNICATIONMODEISINDISPENSABLE,PEOPLEWANTTOUSEMORECONVENIENT,CHEAPERANDFASTERWAYOFCOMMUNICATIONTHENYOUNEEDTODEVELOPASETOFNETWORKCHATSYSTEM,THISRESEARCHISBASEDONTHESOCKETOFNETWORKCHATSYSTEMDEVELOPMENTANDDESIGNTHEDEVELOPMENTUSINGTHEJAVALANGUAGE,THISPAPERINTRODUCESTHESTRUCTUREANDFUNCTIONOFTHISSYSTEM,FINALLYCANPRIVATECHAT,GROUPCHAT,FILETRANSFERNETWORKCHATSYSTEMTHISDESIGNMAINLYSOCKETNETWORKCOMMUNICATIONASTHEFOUNDATION,THESWINGTECHNIQUEWASUSEDTOREALIZETHEGRAPHICALINTERFACEKEYWORDSJAVASOCKETCOMMUNICATIONPROTOCOLSWING長春理工大學光電信息學院畢業(yè)設(shè)計3目錄緒論5選題的背景和意義5所做的主要工作5第一章系統(tǒng)所涉及到的技術(shù)611JAVA語言概述612SOCKET編程713TCP/IP協(xié)議814SWING簡介1015多線程技術(shù)介紹11第二章網(wǎng)絡聊天系統(tǒng)分析1321系統(tǒng)功能需求1322可行性分析14231社會可行性14232用戶可行性14233技術(shù)可行性14234經(jīng)濟可行性1523系統(tǒng)開發(fā)環(huán)境15第三章系統(tǒng)設(shè)計實現(xiàn)1631系統(tǒng)數(shù)據(jù)庫設(shè)計16311數(shù)據(jù)庫概念設(shè)計1632客戶端與服務器的通信1633客戶端與客戶端的通信1734C/S的架構(gòu)模式1735系統(tǒng)的功能模塊設(shè)計17第四章各功能模塊設(shè)計1841服務器端的設(shè)計18411服務器等待連接線程設(shè)計18412服務器處理客戶端信息線程設(shè)計1942客戶端設(shè)計23421客戶端登錄模塊設(shè)計23422新用戶注冊模塊設(shè)計24423客戶端主界面模塊設(shè)計24424點對點通信模塊設(shè)計25425一對多通信模塊設(shè)計25426點對點文件傳輸模塊設(shè)計26第五章系統(tǒng)測試28結(jié)束語29長春理工大學光電信息學院畢業(yè)設(shè)計4致謝30參考文獻31附錄基于SOCKET網(wǎng)絡聊天系統(tǒng)源代碼32長春理工大學光電信息學院畢業(yè)設(shè)計5緒論選題的背景和意義在INTERNET的計算機網(wǎng)絡大潮中,人們已漸漸習慣于在網(wǎng)絡上購物、聊天、看電影、交朋友等,人們的生活也是離不開網(wǎng)絡。我們每天都在各種各樣的網(wǎng)絡應用中滿足自己的需求。慢慢的,網(wǎng)絡也無時無刻的改變?nèi)藗兊纳?。當前人們進行信息交流的方式非常多,例如電報、電話、電子郵件等通訊手段。但是這些都存在不便利或者費用方面的問題,例如電子郵件,雖然費用不高,甚至可以免費使用,但是無法實現(xiàn)即時通訊,只能作為一種輔助交流的通訊手段。這時開發(fā)一套網(wǎng)絡聊天系統(tǒng)變得尤為重要,通過該系統(tǒng)不但能夠?qū)崿F(xiàn)點對點的交流,還能夠?qū)崿F(xiàn)多人同時聊天,并且可以相互傳遞文件資料。最主要的是,它的費用非常低廉,信息處理速度快,這樣人們才能在這個活動的社會中加強聯(lián)系,從而創(chuàng)建出更多的財富和價值?,F(xiàn)如今已有很多的網(wǎng)絡聊天系統(tǒng),例如騰訊的QQ、微信、阿里旺旺等等。這些網(wǎng)絡聊天系統(tǒng)已經(jīng)非常成熟了,不過它們都要求用戶必須連接互聯(lián)網(wǎng)才能夠進行通信。所以根據(jù)用途的不同,我想開發(fā)的這一套網(wǎng)絡聊天系統(tǒng)是在一個局域網(wǎng)中實現(xiàn)通信的,這樣可以防止網(wǎng)絡中的一些窺聽,對信息安全性要求高的企業(yè)或是私人工作環(huán)境是一個很好的解決方案。該系統(tǒng)分為SERVER端和客戶端兩部分組成,SERVER端需要運行在服務器上,而客戶端需要安裝在用于通信的PC上,用戶只需通過客戶端連接至服務器上,就可以實現(xiàn)在局域網(wǎng)內(nèi)的即時通信了。所做的主要工作本課題主要研究的是基于SOCKET的聊天軟件,對于這個聊天軟件的設(shè)計是分為服務器程序和客戶端程序,本課題的目標是能實現(xiàn)用戶在客戶端與服務器端傳遞信息。主要研究開發(fā)內(nèi)容是熟悉系統(tǒng)開發(fā)平臺,探索在此開發(fā)平臺下,利用SOCKET編程技術(shù)、多線程開發(fā)技術(shù)、TCP/IP協(xié)議等進行聊天軟件的實際開發(fā)。具體要實現(xiàn)的目標如下1實現(xiàn)用戶的注冊、登陸、修改信息等功能2實現(xiàn)點對點的通信,即私聊3實現(xiàn)一對多的通信,即群聊4實現(xiàn)點對點的文件傳輸。長春理工大學光電信息學院畢業(yè)設(shè)計6第一章系統(tǒng)所涉及到的技術(shù)11JAVA語言概述JAVA是一種可以撰寫跨平臺應用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言,由升陽(SUNMICROSYSTEMS)公司的詹姆斯高斯林(JAMESGOSLING)等人于1990年代初開發(fā)。它最初被命名為OAK,目標設(shè)定在家用電器等小型系統(tǒng)的編程語言,來解決諸如電視機、電話、鬧鐘、烤面包機等家用電器的控制和通訊問題。由于這些智能化家電的市場需求沒有預期的高,SUN放棄了該項計劃。就在OAK幾近失敗之時,隨著互聯(lián)網(wǎng)的發(fā)展,SUN看到了OAK在計算機網(wǎng)絡上的廣闊應用前景,于是改造了OAK,在1995年5月23日以“JAVA”的名稱正式發(fā)布了。JAVA伴隨著互聯(lián)網(wǎng)的迅猛發(fā)展而發(fā)展,成為當今計算機業(yè)界不可忽視的力量和重要的發(fā)展潮流與方向。(1)JAVA語言的起源最早JAVA語言的出現(xiàn)是源于獨立開發(fā)平臺語言的需要,當時人們希望能編寫出嵌入到各種家用電器等設(shè)備的芯片上、且易于維護的程序。它的出現(xiàn)是為了彌補當時的編程語言,例如C、C等只能對特定的CPU芯片進行編譯的缺陷。JAVA的設(shè)計者們就大膽設(shè)想讓更換芯片的電器還是能夠正確運行,無需重新編譯芯片,因此SUN公司于1990年成立了由JAMESGOSLING領(lǐng)導的開發(fā)小組,開始致力于開發(fā)一種可移植的、跨平臺的語言,該語言能生成正確運行于各種操作系統(tǒng)、各種CPU芯片上的代碼。經(jīng)過他們的精心鉆研和努力,便促成了JAVA語言的誕生。(2)JAVA語言的發(fā)展前景在2005年的JAVAONE開發(fā)者大會上,JAMESGOSLING做了題為“JAVA技術(shù)下一個10年貢獻”的演講,JAMESGOSLING認為,JAVA技術(shù)提高了計算的“流動性”,就如同貨幣的發(fā)明提高了商品的流動性一樣。無所不在的網(wǎng)絡豐富了每個人的信息量,就如同可以兌換的貨幣產(chǎn)生了財富一樣。由于從前的網(wǎng)絡速度是很慢的,所以計算被束縛在特定的計算機上,而這種情況將一去不復返了。目前,全球JAVA開發(fā)人員已經(jīng)超過450萬,因此JAVA社區(qū)是一個充滿活力和創(chuàng)新精神的團隊,這正是JAVA更加繁榮的保障。為了保持JAVA的增長和推進JAVA社區(qū)的參與,SUN在JAVAONE開發(fā)者大會上宣布開放JAVA核心源代碼,以鼓勵更多的人參與到社團活動中來,這是SUN為推進社團發(fā)展和維護JAVA技術(shù)兼容性而邁出的重要一步,同時也是JAVA技術(shù)在創(chuàng)新和社會進步上繼續(xù)發(fā)揮重要作用的標志。隨著JAVA的開源,在未來的十年里,JAVA的應用范圍將變得更廣。數(shù)字媒體將是JAVA的下一個目標,同時,JAVA將教育和健康作為未來JAVA發(fā)展過程中的兩大重點應用領(lǐng)域。(3)JAVA的語法JAVA是面向?qū)ο蟮某绦蛟O(shè)計語言,其基本語法和C語言大致相同。從一定長春理工大學光電信息學院畢業(yè)設(shè)計7角度上講,C語言加上面向?qū)ο蠊δ芫褪荂。那么JAVA與C有什么區(qū)別呢簡要地說,JAVA改進了C的一些缺點,并增加了一些新的功能,從而變得比C更加簡單、易學,編寫出來的程序也更具健壯性。下面就對它們進行一個簡單的比較。JAVA去掉了C語言的指針。如指針使用得當,對增強程序的功能有很大幫助,一旦使用不當,經(jīng)常會導致死機。JAVA沒有了C語言中的預處理器。如IFDEF、DEFINE、常量聲明等都不使用了,當然也少了INCLUDE命令,從而也沒有頭文件(H文件)。和C相比,JAVA不支持多繼承的概念,目的是為了避免對象和對象之間的關(guān)系復雜化。JAVA增加了垃圾回收機制、異常處理和新的限定詞等功能。這些幾乎全部都是基于整個系統(tǒng)和程序本身安全性的考慮。不論在何種平臺上,JAVA基本數(shù)據(jù)類型的大小是不變的。12SOCKET編程SOCKET接口是訪問INTERNET使用得最廣泛的方法。如果你有一臺剛配好TCP/IP協(xié)議的主機,其IP地址是19216801,此時在另一臺主機或同一臺主機上執(zhí)行FTP19216801,顯然無法建立連接。因“19216801“這臺主機沒有運行FTP服務軟件。同樣,在另一臺或同一臺主機上運行瀏覽軟件如NETSCAPE,輸入“HTTP/19216801“,也無法建立連接。現(xiàn)在,如果在這臺主機上運行一個FTP服務軟件(該軟件將打開一個SOCKET,并將其綁定到21端口),再在這臺主機上運行一個WEB服務軟件(該軟件將打開另一個SOCKET,并將其綁定到80端口)。這樣,在另一臺主機或同一臺主機上執(zhí)行FTP19216801,F(xiàn)TP客戶軟件將通過21端口來呼叫主機上由FTP服務軟件提供的SOCKET,與其建立連接并對話。而在NETSCAPE中輸入“HTTP/19216801“時,將通過80端口來呼叫主機上由WEB服務軟件提供的SOCKET,與其建立連接并對話。在INTERNET上有很多這樣的主機,這些主機一般運行了多個服務軟件,同時提供幾種服務。每種服務都打開一個SOCKET,并綁定到一個端口上,不同的端口對應于不同的服務。SOCKET正如其英文原意那樣,像一個多孔插座。一臺主機猶如布滿各種插座的房間,每個插座有一個編號,有的插座提供220伏交流電,有的提供110伏交流電,有的則提供有線電視節(jié)目??蛻糗浖⒉孱^插到不同編號的插座,就可以得到不同的服務。在JAVA中所謂SOCKET通常也稱作“套接字“,用于描述IP地址和端口,是一個通信鏈的句柄。應用程序通常通過“套接字“向網(wǎng)絡發(fā)出請求或者應答網(wǎng)絡請求。,SOCKET和SERVERSOCKET類庫位于JAVANET包中。SERVERSOCKET用于服務器端,SOCKET是建立網(wǎng)絡連接時使用的。在連接成功時,應用程序兩端都會產(chǎn)生一個SOCKET實例,操作這個實例,完成所需的會話。對于一個網(wǎng)絡連接來說,套接字是平等的,并沒有差別,不因為在服務器端或在客戶端而產(chǎn)生不同級別。不管是SOCKET還是SERVERSOCKET它們的工作都是通過SOCKETIMPL類及其子類長春理工大學光電信息學院畢業(yè)設(shè)計8完成的。重要的SOCKETAPIJAVANETSOCKET繼承于JAVALANGOBJECT,有八個構(gòu)造器,其方法并不多,下面介紹使用最頻繁的三個方法。ACCEPT方法用于產(chǎn)生“阻塞“,直到接受到一個連接,并且返回一個客戶端的SOCKET對象實例?!白枞笆且粋€術(shù)語,它使程序運行暫時“停留“在這個地方,直到一個會話產(chǎn)生,然后程序繼續(xù);通?!白枞笆怯裳h(huán)產(chǎn)生的。GETINPUTSTREAM方法獲得網(wǎng)絡連接輸入,同時返回一個INPUTSTREAM對象實例。GETOUTPUTSTREAM方法連接的另一端將得到輸入,同時返回一個OUTPUTSTREAM對象實例。注意其中GETINPUTSTREAM和GETOUTPUTSTREAM方法均可能會產(chǎn)生一個IOEXCEPTION,它必須被捕獲,因為它們返回的流對象,通常都會被另一個流對象使用。服務器,使用SERVERSOCKET監(jiān)聽指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以建議使用大于1024的端口),等待客戶連接請求,客戶連接后,會話產(chǎn)生;在完成會話后,關(guān)閉連接。客戶端,使用SOCKET對網(wǎng)絡上某一個服務器的某一個端口發(fā)出連接請求,一旦連接成功,打開會話;會話完成后,關(guān)閉SOCKET??蛻舳瞬恍枰付ù蜷_的端口,通常臨時的、動態(tài)的分配一個1024以上的端口。SOCKET接口是TCP/IP網(wǎng)絡的API,SOCKET接口定義了許多函數(shù)或例程,程序員可以用它們來開發(fā)TCP/IP網(wǎng)絡上的應用程序。要學INTERNET上的TCP/IP網(wǎng)絡編程,必須理解SOCKET接口。SOCKET接口設(shè)計者最先是將接口放在UNIX操作系統(tǒng)里面的。如果了解UNIX系統(tǒng)的輸入和輸出的話,就很容易了解SOCKET了。網(wǎng)絡的SOCKET數(shù)據(jù)傳輸是一種特殊的I/O,SOCKET也是一種文件描述符。SOCKET也具有一個類似于打開文件的函數(shù)調(diào)用SOCKET,該函數(shù)返回一個整型的SOCKET描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該SOCKET實現(xiàn)的。13TCP/IP協(xié)議TCP/IP是TRANSMISSIONCONTROLPROTOCOL/INTERNETPROTOCOL的簡寫,中文譯名為傳輸控制協(xié)議/互聯(lián)網(wǎng)絡協(xié)議,該協(xié)議是INTERNET最基本的協(xié)議,簡單地說,就是由底層的IP協(xié)議和TCP協(xié)議組成的。TCP/IP協(xié)議的開發(fā)工作始于70年代,是用于互聯(lián)網(wǎng)的第一套協(xié)議。(1)TCP/IP參考模型TCP/IP協(xié)議的開發(fā)研制人員將INTERNET分為五個層次,以便于理解,它也稱為互聯(lián)網(wǎng)分層模型或互聯(lián)網(wǎng)分層參考模型,如下所示物理層對應于網(wǎng)絡的基本硬件,這也是INTERNET物理構(gòu)成,即我們可以看得見的硬設(shè)備,如PC機、互連網(wǎng)服務器、網(wǎng)絡設(shè)備等,必須對這些硬設(shè)備的電氣特性作一個規(guī)范,使這些設(shè)備都能夠互相連接并兼容使用。網(wǎng)絡接口層它定義了將資料組成正確幀的規(guī)程和在網(wǎng)絡中傳輸幀的規(guī)程,長春理工大學光電信息學院畢業(yè)設(shè)計9幀是指一串資料,它是資料在網(wǎng)絡中傳輸?shù)膯挝??;ヂ?lián)網(wǎng)層本層定義了互聯(lián)網(wǎng)中傳輸?shù)摹靶畔备袷?,以及從一個用戶通過一個或多個路由器到最終目標的“信息包“轉(zhuǎn)發(fā)機制。傳輸層為兩個用戶進程之間建立、管理和拆除可靠而又有效的端到端連接。應用層它定義了應用程序使用互聯(lián)網(wǎng)的規(guī)程。(2)網(wǎng)間協(xié)議IPINTERNET上使用的一個關(guān)鍵的底層協(xié)議是網(wǎng)際協(xié)議,通常稱IP協(xié)議。我們利用一個共同遵守的通信協(xié)議,從而使INTERNET成為一個允許連接不同類型的計算機和不同操作系統(tǒng)的網(wǎng)絡。要使兩臺計算機彼此之間進行通信,必須使兩臺計算機使用同一種“語言“。通信協(xié)議正像兩臺計算機交換信息所使用的共同語言,它規(guī)定了通信雙方在通信中所應共同遵守的約定。計算機的通信協(xié)議精確地定義了計算機在彼此通信過程的所有細節(jié)。例如,每臺計算機發(fā)送的信息格式和含義,在什么情況下應發(fā)送規(guī)定的特殊信息,以及接收方的計算機應做出哪些應答等等。網(wǎng)際協(xié)議IP協(xié)議提供了能適應各種各樣網(wǎng)絡硬件的靈活性,對底層網(wǎng)絡硬件幾乎沒有任何要求,任何一個網(wǎng)絡只要可以從一個地點向另一個地點傳送二進制數(shù)據(jù),就可以使用IP協(xié)議加入INTERNET了。如果希望能在INTERNET上進行交流和通信,則每臺連上INTERNET的計算機都必須遵守IP協(xié)議。為此使用INTERNET的每臺計算機都必須運行IP軟件,以便時刻準備發(fā)送或接收信息。IP協(xié)議對于網(wǎng)絡通信有著重要的意義網(wǎng)絡中的計算機通過安裝IP軟件,使許許多多的局域網(wǎng)絡構(gòu)成了一個龐大而又嚴密的通信系統(tǒng)。從而使INTERNET看起來好像是真實存在的,但實際上它是一種并不存在的虛擬網(wǎng)絡,只不過是利用IP協(xié)議把全世界上所有愿意接入INTERNET的計算機局域網(wǎng)絡連接起來,使得它們彼此之間都能夠通信。(3)傳輸控制協(xié)議TCP盡管計算機通過安裝IP軟件,從而保證了計算機之間可以發(fā)送和接收資料,但IP協(xié)議還不能解決資料分組在傳輸過程中可能出現(xiàn)的問題。因此,若要解決可能出現(xiàn)的問題,連上INTERNET的計算機還需要安裝TCP協(xié)議來提供可靠的并且無差錯的通信服務。TCP協(xié)議被稱作一種端對端協(xié)議。這是因為它為兩臺計算機之間的連接起了重要作用當一臺計算機需要與另一臺遠程計算機連接時,TCP協(xié)議會讓它們建立一個連接、發(fā)送和接收資料以及終止連接。傳輸控制協(xié)議TCP協(xié)議利用重發(fā)技術(shù)和擁塞控制機制,向應用程序提供可靠的通信連接,使它能夠自動適應網(wǎng)上的各種變化。即使在INTERNET暫時出現(xiàn)堵塞的情況下,TCP也能夠保證通信的可靠。眾所周知,INTERNET是一個龐大的國際性網(wǎng)絡,網(wǎng)絡上的擁擠和空閑時間總是交替不定的,加上傳送的距離也遠近不同,所以傳輸資料所用時間也會變化長春理工大學光電信息學院畢業(yè)設(shè)計10不定。TCP協(xié)議具有自動調(diào)整“超時值“的功能,能很好地適應INTERNET上各種各樣的變化,確保傳輸數(shù)值的正確。因此,從上面我們可以了解到IP協(xié)議只保證計算機能發(fā)送和接收分組資料,而TCP協(xié)議則可提供一個可靠的、可流控的、全雙工的信息流傳輸服務。綜上所述,雖然IP和TCP這兩個協(xié)議的功能不盡相同,也可以分開單獨使用,但它們是在同一時期作為一個協(xié)議來設(shè)計的,并且在功能上也是互補的。只有兩者的結(jié)合,才能保證INTERNET在復雜的環(huán)境下正常運行。凡是要連接到INTERNET的計算機,都必須同時安裝和使用這兩個協(xié)議,因此在實際中常把這兩個協(xié)議統(tǒng)稱作TCP/IP協(xié)議。14SWING簡介SWING是一個用于開發(fā)JAVA應用程序用戶界面的開發(fā)工具包。它以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺應用程序可以使用任何可插拔的外觀風格。SWING開發(fā)人員只用很少的代碼就可以利用SWING豐富、靈活的功能和模塊化組件來創(chuàng)建優(yōu)雅的用戶界面。SWING的產(chǎn)生主要原因就是AWT不能滿足圖形化用戶界面發(fā)展的需要。AWT設(shè)計的初衷是支持開發(fā)小應用程序的簡單用戶界面。例如AWT缺少剪貼板、打印支持、鍵盤導航等特性,而且原來的AWT甚至不包括彈出式菜單或滾動窗格等基本元素。此外AWT還存在著嚴重的缺陷,人們使AWT適應基于繼承的、具有很大伸縮性的事件模型,基于同位體的體系結(jié)構(gòu)也成為其致命的弱點。隨著發(fā)展的需要,SWING出現(xiàn)了,SWING組件幾乎都是輕量組件,與重量組件相比,沒有本地的對等組件,不像重量組件要在它們自己的本地不透明窗體中繪制,輕量組件在它們的重量組件的窗口中繪制。這一講我們講一下基本的SWING組件使用方法和使用SWING組件創(chuàng)建用戶界面的初步方法。SWING是由100純JAVA實現(xiàn)的,SWING組件是用JAVA實現(xiàn)的輕量級(LIGHTWEIGHT)組件,沒有本地代碼,不依賴操作系統(tǒng)的支持,這是它與AWT組件的最大區(qū)別。由于AWT組件通過與具體平臺相關(guān)的對等類(PEER)實現(xiàn),因此SWING比AWT組件具有更強的實用性。SWING在不同的平臺上表現(xiàn)一致,并且有能力提供本地窗口系統(tǒng)不支持的其它特性。SWING采用了一種MVC的設(shè)計范式,即“模型視圖控制“(MODELVIEWCONTROLLER),其中模型用來保存內(nèi)容,視圖用來顯示內(nèi)容,控制器用來控制用戶輸入。SWING外觀感覺采用可插入的外觀感覺(PLUGGABLELOOKANDFEEL,PLPUBLICMYTHREADINTNUMNUMBERNUMSYSTEMOUTPRINTLN“創(chuàng)建線程“NUMBERPUBLICVOIDRUNWHILETRUESYSTEMOUTPRINTLN“線程“NUMBER“計數(shù)“COUNTIFCOUNT6RETURNPUBLICSTATICVOIDMAINSTRINGARGS長春理工大學光電信息學院畢業(yè)設(shè)計12FORINTI0I5INEWMYTHREADI1START這種方法簡單明了,符合大家的習慣,但是,它也有一個很大的缺點,那就是如果我們的類已經(jīng)從一個類繼承(如小程序必須繼承自APPLET類),則無法再繼承THREAD類,這時如果我們又不想建立一個新的類,應該怎么辦呢我們不妨來探索一種新的方法我們不創(chuàng)建THREAD類的子類,而是直接使用它,那么我們只能將我們的方法作為參數(shù)傳遞給THREAD類的實例,有點類似回調(diào)函數(shù)。但是JAVA沒有指針,我們只能傳遞一個包含這個方法的類的實例。那么如何限制這個類必須包含這一方法呢當然是使用接口(雖然抽象類也可滿足,但是需要繼承,而我們之所以要采用這種新方法,不就是為了避免繼承帶來的限制嗎)JAVA提供了接口JAVALANGRUNNABLE來支持這種方法。方法二實現(xiàn)RUNNABLE接口RUNNABLE接口只有一個方法RUN,我們聲明自己的類實現(xiàn)RUNNABLE接口并提供這一方法,將我們的線程代碼寫入其中,就完成了這一部分的任務。但是RUNNABLE接口并沒有任何對線程的支持,我們還必須創(chuàng)建THREAD類的實例,這一點通過THREAD類的構(gòu)造函數(shù)PUBLICTHREADRUNNABLETARGET來實現(xiàn)。下面是一個例子PUBLICCLASSMYTHREADIMPLEMENTSRUNNABLEINTCOUNT1,NUMBERPUBLICMYTHREADINTNUMNUMBERNUMSYSTEMOUTPRINTLN“創(chuàng)建線程“NUMBERPUBLICVOIDRUNWHILETRUESYSTEMOUTPRINTLN“線程“NUMBER“計數(shù)“COUNTIFCOUNT6RETURNPUBLICSTATICVOIDMAINSTRINGARGSFORINTI0I5INEWTHREADNEWMYTHREADI1START嚴格地說,創(chuàng)建THREAD子類的實例也是可行的,但是必須注意的是,該子類必須沒有覆蓋THREAD類的RUN方法,否則該線程執(zhí)行的將是子類的RUN方長春理工大學光電信息學院畢業(yè)設(shè)計13法,而不是我們用以實現(xiàn)RUNNABLE接口的類的RUN方法,對此大家不妨試驗一下。使用RUNNABLE接口來實現(xiàn)多線程使得我們能夠在一個類中包容所有的代碼,有利于封裝,它的缺點在于,我們只能使用一套代碼,若想創(chuàng)建多個線程并使各個線程執(zhí)行不同的代碼,則仍必須額外創(chuàng)建類,如果這樣的話,在大多數(shù)情況下也許還不如直接用多個類分別繼承THREAD來得緊湊。(2)線程的四種狀態(tài)1新狀態(tài)線程已被創(chuàng)建但尚未執(zhí)行(START尚未被調(diào)用)。2可執(zhí)行狀態(tài)線程可以執(zhí)行,雖然不一定正在執(zhí)行。CPU時間隨時可能被分配給該線程,從而使得它執(zhí)行。3死亡狀態(tài)正常情況下RUN返回使得線程死亡。調(diào)用STOP或DESTROY亦有同樣效果,但是不被推薦,前者會產(chǎn)生異常,后者是強制終止,不會釋放鎖。4阻塞狀態(tài)線程不會被分配CPU時間,無法執(zhí)行。(3)線程的優(yōu)先級線程的優(yōu)先級代表該線程的重要程度,當有多個線程同時處于可執(zhí)行狀態(tài)并等待獲得CPU時間時,線程調(diào)度系統(tǒng)根據(jù)各個線程的優(yōu)先級來決定給誰分配CPU時間,優(yōu)先級高的線程有更大的機會獲得CPU時間,優(yōu)先級低的線程也不是沒有機會,只是機會要小一些罷了。你可以調(diào)用THREAD類的方法GETPRIORITY和SETPRIORITY來存取線程的優(yōu)先級,線程的優(yōu)先級界于1MIN_PRIORITY和10MAX_PRIORITY之間,缺省是5NORM_PRIORITY。(4)線程的同步由于同一進程的多個線程共享同一片存儲空間,在帶來方便的同時,也帶來了訪問沖突這個嚴重的問題。JAVA語言提供了專門機制以解決這種沖突,有效避免了同一個數(shù)據(jù)對象被多個線程同時訪問。由于我們可以通過PRIVATE關(guān)鍵字來保證數(shù)據(jù)對象只能被方法訪問,所以我們只需針對方法提出一套機制,這套機制就是SYNCHRONIZED關(guān)鍵字,它包括兩種用法SYNCHRONIZED方法和SYNCHRONIZED塊。第二章網(wǎng)絡聊天系統(tǒng)分析21系統(tǒng)功能需求一般在開發(fā)一款軟件時,最先考慮的就是用戶的需求,所以進行需求分析是必不可少的步驟,它需要對目標項目提出完整、準確、清晰、具體的要求。首先,服務器需要同時連接很多個用戶,并能提供給這些連接用戶所需要的任務處理請求,這就要求服務器能同時處理多個SOCKET連接。服務器模型一般分為循環(huán)服務器和并發(fā)服務器,循環(huán)服務器一次只能處理一個連接,也就是說同一時間只能由一個用戶連接到服務器進行消息處理,這種情況是不被允許的。因此我們將采長春理工大學光電信息學院畢業(yè)設(shè)計14用多線程方式的并發(fā)服務器來設(shè)計服務器端,這樣將能從很大程度上提高服務器的運行效率。其次,客戶端只需要連接到服務器便可以進行任務的處理工作,因此客戶端的主要性能要求為圖形界面運行的穩(wěn)定性和對出錯信息的及時反映。當一個窗體出現(xiàn)問題時能夠及時的處理,讓主程序不受影響。再者,所有的應用程序在運行過程中都會出現(xiàn)出錯的情況,這種錯誤可能來自于程序本身,也可能是用戶操作的失誤所造成的。當有錯誤發(fā)生時,我們應該有一個很好的機制來保障錯誤能夠及時地被排除。當應用程序出現(xiàn)了錯誤的時候我們就需要程序能提供給我們出錯的信息,這樣用戶就能夠很快的找出具體的出錯原因,以便尋找合理的途徑去解決它。22可行性分析可行性分析FEASIBILITYANALYSIS也稱為可行性研究,是在系統(tǒng)調(diào)查的基礎(chǔ)上,針對新系統(tǒng)的開發(fā)是否具備必要性和可能性,對新系統(tǒng)的開發(fā)從技術(shù)、經(jīng)濟、社會的方面進行分析和研究,以避免投資失誤,保證新系統(tǒng)的開發(fā)成功??尚行匝芯康哪康木褪怯米钚〉拇鷥r在盡可能短的時間內(nèi)確定問題是否能夠解決。231社會可行性根據(jù)目前的計算機發(fā)展來看,公司幾乎都是有網(wǎng)路需要的,無論是公網(wǎng)還是私網(wǎng),很多公司和企業(yè)或者校園都提供了局域網(wǎng)信息服務。而網(wǎng)絡聊天系統(tǒng)只要是用戶的電腦連入局域網(wǎng)就能夠訪問,無須任何的其他昂貴設(shè)備,大大的節(jié)省了用戶的資金。232用戶可行性本系統(tǒng)服務的對象是各大公司或企業(yè)的工作人員,使用人員主要是掌握計算機基本操作技能的用戶。加之,當前類似的系統(tǒng)操作簡單,使用者能夠很快上手。因此,在系統(tǒng)的使用方面不會存在問題。233技術(shù)可行性本次項目所使用的開發(fā)語言是JAVA,JAVA語言以其跨平臺的特性一致都被業(yè)界認為是編程的最佳選擇,經(jīng)過多年的發(fā)展JAVA虛擬機已經(jīng)升至17版本,在性能上有了很大提高,在API函數(shù)方面有了很多擴充和冗余的精簡。同時,基于JAVA語言的設(shè)計模式的發(fā)展為軟件的設(shè)計提供了大量的可供選擇的解決方案,保證了系統(tǒng)軟件的實現(xiàn)效率和運行過程中的邏輯健壯性。長春理工大學光電信息學院畢業(yè)設(shè)計15圖21C/S架構(gòu)示意圖本次項目系統(tǒng)架構(gòu)是C/S架構(gòu)。如圖21,因為C/S以它的靈活性,通用性,易操作性等特點在用戶呈現(xiàn)方面一致是比較好的選擇。目前,由于這種架構(gòu)在系統(tǒng)構(gòu)架方面的廣泛采用,已經(jīng)在系統(tǒng)構(gòu)架上積累了大量的經(jīng)驗。所以本系統(tǒng)在技術(shù)上是可行的。234經(jīng)濟可行性從經(jīng)濟可行性的角度出發(fā),系統(tǒng)在開發(fā)的過程中,主要應該考慮如何節(jié)約開發(fā)成本,縮短開發(fā)周期,以最小的投入獲得最大的回報。為了保證軟件產(chǎn)品的質(zhì)量,系統(tǒng)的開發(fā)周期應該控制在1個月左右,并且要保證充足的調(diào)研時間和測試周期。整個網(wǎng)絡聊天系統(tǒng)在開發(fā)過程中僅僅需要1到2名具有一定開發(fā)經(jīng)驗的程序員。所用的軟件主要是ECLIPSE,該軟件目前是開源和免費的。在硬件方面只需要一臺交換機和專門用于編程和數(shù)據(jù)庫服務的1到2臺電腦,這些在目前市場上價格是可以接受的。因此在經(jīng)濟方面是可行的。23系統(tǒng)開發(fā)環(huán)境軟件環(huán)境方面,本系統(tǒng)的采用的開發(fā)技術(shù)主要是JAVA,界面技術(shù)上采用的是SWING,并通過SOCKET和多線程技術(shù)來實現(xiàn)。系統(tǒng)開發(fā)工具是采用的ECLIPSE集成開發(fā)環(huán)境。在硬件環(huán)境方面,本系統(tǒng)的實現(xiàn)需要一臺數(shù)據(jù)庫服務器和一臺服務器以及若干的終端電腦。以保證在系統(tǒng)完成之后有一個模擬環(huán)境,進行必要的測試。長春理工大學光電信息學院畢業(yè)設(shè)計16第三章系統(tǒng)設(shè)計實現(xiàn)31系統(tǒng)數(shù)據(jù)庫設(shè)計本文在系統(tǒng)分析的基礎(chǔ)上,對系統(tǒng)的規(guī)模和總體目標有了客觀的估計,明確了設(shè)計任務和步驟。數(shù)據(jù)庫設(shè)計是一個有序工作流程,它包括需求分析、概念設(shè)計、邏輯設(shè)計和物理設(shè)計三個階段。在需求分析已經(jīng)基本明確的前提下,本小結(jié)將主要從概念設(shè)計和邏輯設(shè)計階段對數(shù)據(jù)庫進行分設(shè)計。311數(shù)據(jù)庫概念設(shè)計本系統(tǒng)的數(shù)據(jù)庫概念設(shè)計主要用關(guān)系實體模型,即ER模型。利用ER方法進行概念設(shè)計,可分為三步進行首先設(shè)計局部ER模式;然后把局部ER模式綜合成一個全局ER模式;最后對全局ER模式進行細化,得到最終的ER模式,即概念模式。以下將按照這樣的步驟進行。實體的劃分方式有兩種,一種是按系統(tǒng)的當前用戶進行劃分。另一種是按用戶要求數(shù)據(jù)庫提供的服務歸納成幾類,是每一類應用訪問的數(shù)據(jù)顯地不通于其他類,然后為每類應用設(shè)計一個局部的ER模式。本文按用戶劃分設(shè)計局部ER模式。主要用于存儲用戶注冊信息聊天記錄以及對文件的存儲等。32客戶端與服務器的通信客戶端和服務器是基于TCP/IP協(xié)議建立連接,并完成數(shù)據(jù)傳輸?shù)模淞鞒虉D如下圖所示。圖32客戶端和服務器創(chuàng)建流程圖在JAVA的基于TCP/IP協(xié)議的SOCKET編程中,服務端使用SERVERSOCKET長春理工大學光電信息學院畢業(yè)設(shè)計17類開創(chuàng)建,而客戶端使用的SOCKET類。33客戶端與客戶端的通信客戶端同客戶端的通信是通過服務器轉(zhuǎn)發(fā)的形式來實現(xiàn)的,其示意圖如下圖所示。圖33通信示意圖需要注意的是,客戶端同客戶端之間并沒有直接的聯(lián)系,而是通過服務器作為中轉(zhuǎn)站的形式來完成數(shù)據(jù)傳輸?shù)?。這樣可以保證服務器能夠?qū)蛻舳酥g的數(shù)據(jù)進行處理,同時還能保證數(shù)據(jù)的安全性。34C/S的架構(gòu)模式本聊天系統(tǒng)采用的是目前流行C/S架構(gòu)來設(shè)置的,同時采用了三層架構(gòu)。這三層分別是指數(shù)據(jù)庫服務器、應用程序服務器以及應用程序客戶端。這樣可以合理的將各個任務分配至客戶端和服務器端,從而降低系統(tǒng)的通信開銷。圖34架構(gòu)示意圖35系統(tǒng)的功能模塊設(shè)計根據(jù)前面的需求分析和系統(tǒng)總體分析,最終設(shè)計系統(tǒng)的功能模塊圖如下圖所示。長春理工大學光電信息學院畢業(yè)設(shè)計18圖35系統(tǒng)的功能模塊圖第四章各功能模塊設(shè)計41服務器端的設(shè)計服務器端需要完成三大功能,分別是與客戶端建立連接、監(jiān)聽客戶端消息以及操作數(shù)據(jù)庫。由于會有多個用戶同時訪問服務器,為了適應多個用戶的并發(fā)訪問。本系統(tǒng)服務器端程序需要借助于JAVA語言的多線程機制來完成。411服務器等待連接線程設(shè)計具體的實現(xiàn)為在服務器成功創(chuàng)建后,會啟動一個循環(huán)等待連接線程,該線程專門用來負責接收客戶端請求,其實現(xiàn)代碼如下所示。CLASSSERVERACCEPTEXTENDSTHREADPUBLICVOIDRUNTRYWHILETRUESOCKETSSSSACCEPTSERVERREADSRNEWSERVERREADSRSRSSSRSTARTCATCHIOEXCEPTIONEEPRINTSTACKTRACE長春理工大學光電信息學院畢業(yè)設(shè)計19412服務器處理客戶端信息線程設(shè)計當服務器等待連接線程接收到一個新的套接字連接后,就會啟動一個新的服務器處理客戶端信息線程來負責本服務器和該客戶端之間的連接,同時該在線程中的RUN方法中處理客戶端的請求。等待連接線程將繼續(xù)等待下一個客戶端連接請求。前一個請求在完成所有的交互操作后自動退出,同時連接也將關(guān)閉,其實現(xiàn)代碼如下。CLASSSERVERREADEXTENDSTHREADSOCKETSRSSTRINGSADRESSBUFFEREDREADERBRSTRINGUSERNAMEPUBLICVOIDRUNTRYBRNEWBUFFEREDREADERNEWINPUTSTREAMREADERSRSGETINPUTSTREAMPRINTSTREAMPSNEWPRINTSTREAMSRSGETOUTPUTSTREAMSADRESSSRSGETINETADDRESSTOSTRINGSUBSTRING1WHILETRUESTRINGCODELINEBRREADLINEIFCODELINENULLSYSTEMOUTPRINTLNCODELINE“IFCODELINESTARTSWITH“/有人上線,并通知在線用戶更新在線人員列表IFREADFROMFILECODELINESPLIT“1,CODELINESPLIT“2EQUALS“TRUE“IFMAPIPCONTAINSKEYCODELINESPLIT“1SYSTEMOUTPRINTLNCODELINE“有人登陸了“THISUSERNAMECODELINESPLIT“1MAPPSPUTUSERNAME,PSMAPIPPUTUSERNAME,SADRESS長春理工大學光電信息學院畢業(yè)設(shè)計20SYSTEMOUTPRINTLNUSERNAMESETSETMAPPSKEYSETITERATORITSETITERATORSTRINGBUFFERSBNEWSTRINGBUFFER“,“WHILEITHASNEXTSTRINGASTRINGITNEXTSBAPPENDA“,“ITERATORIITSETITERATORWHILEIITHASNEXTSTRINGASTRINGIITNEXTPRINTSTREAMPSSPRINTSTREAMMAPPSGETAPSSPRINTLNSBTOSTRINGELSEPSPRINTLN“TWO“ELSEPSPRINTLN“FALSE“ELSEIFCODELINESTARTSWITH“END“/有人下線,并通知在線用戶更新在線人員列表STRINGLEAVECODELINESPLIT“1SYSTEMOUTPRINTLNLEAVE“下線“MAPPSREMOVELEAVEMAPIPREMOVELEAVESETSETMAPPSKEYSET長春理工大學光電信息學院畢業(yè)設(shè)計21ITERATORITSETITERATORSTRINGBUFFERSBNEWSTRINGBUFFER“,“WHILEITHASNEXTSTRINGASTRINGITNEXTSBAPPENDA“,“ITERATORIITSETITERATORWHILEIITHASNEXTSTRINGASTRINGIITNEXTPRINTSTREAMPSSPRINTSTREAMMAPPSGETAPSSPRINTLNSBTOSTRINGELSEIFCODELINESTARTSWITH“GIVEIP“/要IP,并發(fā)回對應IPSTRINGNMECODELINESPLIT“1STRINGTONMECODELINESPLIT“2PRINTSTREAMPSSMAPPSGETNMEPSSPRINTLN“IP“TONME“MAPIPGETTONMEELSEIFCODELINESTARTSWITH“STRINGNACODELINESPLIT“1STRINGPSWCODELINESPLIT“2IFWRITETOFILENA,PSWPSPRINTLN“TRUE“ELSEPSPRINTLN“FALSE“長春理工大學光電信息學院畢業(yè)設(shè)計22ELSEIFCODELINECONTAINS“STATES“STRINGUSERCODELINESPLIT“0STRINGSTATESCODELINESPLIT“2IFSTATESEQUALS“在線“SETSETMAPPSKEYSETITERATORITSETITERATORSTRINGBUFFERSBNEWSTRINGBUFFER“,“WHILEITHASNEXTSTRINGASTRINGITNEXTSBAPPENDA“,“ITERATORIITSETITERATORWHILEIITHASNEXTSTRINGASTRINGIITNEXTPRINTSTREAMPSSPRINTSTREAMMAPPSGETAPSSPRINTLNSBTOSTRINGELSESETSETMAPPSKEYSETITERATORITSETITERATORSTRINGBUFFERSBNEWSTRINGBUFFER“,“WHILEITHASNEXTSTRINGASTRINGITNEXTIFAEQUALSUSERSBAPPENDA“,“ITERATORIITSETITERATORWHILEIITHASNEXTSTRINGASTRINGIITNEXTPRINTSTREAMPSSPRINTSTREAMMAPPSGETAPSSPRINTLNSBTOSTRING長春理工大學光電信息學院畢業(yè)設(shè)計23ELSE/發(fā)送群消息SETSETMAPPSKEYSETITERATORIITSETITERATORWHILEIITHASNEXTSTRINGASTRINGIITNEXTPRINTSTREAMPSSPRINTSTREAMMAPPSGETAPSSPRINTLNCODELINECATCHIOEXCEPTIONE/TODOAUTOGENERATEDCATCHBLOCKEPRINTSTACKTRACE42客戶端設(shè)計421客戶端登錄模塊設(shè)計客戶端登錄模塊用來判斷用戶是否為合法用戶,如果是則可以登錄到客戶端主界面,否則將無法進入。系統(tǒng)登錄窗口的運行效果如圖41所示。長春理工大學光電信息學院畢業(yè)設(shè)計24圖41登錄窗口在登錄窗口中輸入正確的賬戶和密碼信息,然后單擊“登錄”按鈕,即可向服務器發(fā)送登錄請求。服務器會對用戶的登錄信息進行判斷,然后返回相應的處理結(jié)果。422新用戶注冊模塊設(shè)計在登錄窗口中單擊“注冊新用戶”標簽,這是將打開注冊新用戶窗口,其運行效果如圖42所示。圖42注冊新用戶窗口在注冊新用戶窗口窗口中輸入用戶賬戶、用戶密碼以及確認密碼信息后,單擊“注冊”按鈕即可向服務器發(fā)送注冊請求信息。服務器會對用戶的注冊信息進行判斷,然后返回相應的處理結(jié)果。如果處理成功,將向數(shù)據(jù)庫中添加一條用戶記錄。423客戶端主界面模塊設(shè)計用戶在登錄成功后,將會關(guān)閉登錄窗口,同時打開客戶端主界面,其運行效果如圖43和44所示。長春理工大學光電信息學院畢業(yè)設(shè)計25圖43客戶端主界面圖44客戶端主界面客戶端主界面是用戶進入點對點聊天或者聊天室的通道,用戶的所有操作都是通過主界面來實現(xiàn)的。424點對點通信模塊設(shè)計在客戶端主界面中雙擊需要聊天的對象,就可以打開聊天消息窗口,從而開始點對點的通信,其運行效果如圖45所示。圖45聊天消息窗口在聊天消息窗口的上半部分界面用來顯示聊天記錄,下半部分用來輸入聊天內(nèi)容,輸入完成后,單擊其中的“發(fā)送信息”按鈕既可以實現(xiàn)消息的發(fā)送。425一對多通信模塊設(shè)計在客戶端主界面中單擊“進入聊天室”按鈕,就可以打開聊天室消息窗口,從而開始一對多的通信,其運行效果如圖46所示。長春理工大學光電信息學院畢業(yè)設(shè)計26圖46聊天室消息窗口在聊天室消息窗口中可以看到所有用戶發(fā)送的消息,用戶也可以自己輸入消息內(nèi)容,然后通過單擊“發(fā)送信息”按鈕來發(fā)送消息內(nèi)容。426點對點文件傳輸模塊設(shè)計在聊天消息窗口中,不但可以發(fā)送普通的消息文本,還可以發(fā)送文件。只需要單擊窗體底部的“發(fā)送文件按鈕”即可,這是將打開文件選擇框用來選擇需要傳送的文件。選擇完成后,在界面上將顯示“正在等待對方接收文件”提示信息,其運行效果如圖47所示。圖47發(fā)送文件同時在好友的聊天消息窗口中將顯示“TEST向你發(fā)送了文件無標題長春理工大學光電信息學院畢業(yè)設(shè)計272WMA請及時接收文件”的提示信息,其運行效果如圖48所示。圖48接受文件單擊其中的“接受文件”按鈕,即可打開文件保存對話框,用來選擇文件的保存路徑。保存完成后,界面將提示“開始發(fā)送文件”的提示信息,當文件發(fā)送完成后,界面將提示“文件發(fā)送完畢”的提示信息,其運行效果如圖49所示。圖49文件發(fā)送成功長春理工大學光電信息學院畢業(yè)設(shè)計28第五章系統(tǒng)測試當系統(tǒng)搭建好之后,考慮到系統(tǒng)運行的穩(wěn)定性和實用性,所以需要進行測試,其目的是通過與系統(tǒng)的需求相比較,發(fā)現(xiàn)所開發(fā)的系統(tǒng)與用戶需求不符或矛盾的地方,從而提出更加完善的方案。它的的任務是盡可能徹底地檢查出程序中的錯誤,提高軟件系統(tǒng)的可靠性,其目的是檢驗系統(tǒng)“做得怎樣“。這階段又可分為三個步驟模塊測試,測試每個模塊的程序是否有錯誤;組裝測試,測試模塊之間的接口是否正確;確認測試,測試整個軟件系統(tǒng)是否滿足用戶功能和性能的要求。該階段結(jié)束應交付測試報告,說明測試數(shù)據(jù)的選擇,測試用例以及測試結(jié)果是否符合預期結(jié)果。測試發(fā)現(xiàn)問題之后要經(jīng)過調(diào)試找出錯誤原因和位置,然后進行改正。是基于系統(tǒng)整體需求說明書的黑盒類測試,應覆蓋系統(tǒng)所有聯(lián)合的部件。系統(tǒng)測試是針對整個產(chǎn)品系統(tǒng)進行的測試,目的是驗證系統(tǒng)是否滿足了需求規(guī)格的定義,找出與需求規(guī)格不相符合或與之矛盾的地方。系統(tǒng)測試的對象不僅僅包括需要測試的產(chǎn)品系統(tǒng)的軟件,還要包含軟件所依賴的硬件、外設(shè)甚至包括某些數(shù)據(jù)、某些支持軟件及其接口等。因此,必須將系統(tǒng)中的軟件與各種依賴的資源結(jié)合起來,在系統(tǒng)實際運行環(huán)境下來進行測試。長春理工大學光電信息學院畢業(yè)設(shè)計29結(jié)束語通過這次對網(wǎng)絡聊天系統(tǒng)的開發(fā)與設(shè)計,我學到了很多的知識,包括采用JAVA的SOCKET、SWING以及多線程等技術(shù)等,在該系統(tǒng)中實現(xiàn)了網(wǎng)絡聊天系統(tǒng)的常用基本功能,發(fā)送聊天文字,即時文件傳閱。可以滿足大部門用戶在組建局域網(wǎng)后作為安全便捷的內(nèi)部交流工具之用。長春理工大學光電信息學院畢業(yè)設(shè)計30致謝在本次畢業(yè)設(shè)計的開發(fā)過程中,我曾經(jīng)遇到了很多的困難,有知識儲備量的不足,也有失敗帶來的焦慮心理。不過也有很多幫助我的人,同學的幫助,導師的指點,都讓我在一次次的失敗面前找到解決問題的方法,讓我在面對這些困難的時候,沒有退縮而是選擇了激流勇進,最終在指導老師和同學們的幫助下將問題一個個的解決。本設(shè)計由于時間有限,功能上還是比較簡單,沒有華麗的界面和強大的功能。不過我相信在以后的學習中會繼續(xù)完善它。長春理工大學光電信息學院畢業(yè)設(shè)計31參考文獻1JAVA編程思想M,機械工業(yè)出版社,20076230天學通JAVA項目案例開發(fā)M,電子工業(yè)出版社,200973JAVASWING圖形界面開發(fā)與案例詳解M,清華大學出版社,2008124JAVATCP/IPSOCKET編程原書第2版M,機械工業(yè)出版社,200915JAVA范例大全M,機械工業(yè)出版社,2009106JAVA開發(fā)實戰(zhàn)經(jīng)典M,清華大學出版社,200977JAVA程序設(shè)計一種跨學科的方法M,清華大學出版社,200958JAVA程序設(shè)計教程M,機械工業(yè)出版社,200899JAVA從入門到精通M,清華大學出版社,2008810JAVA網(wǎng)絡編程技術(shù)與實踐M,清華大學出版社,20088長春理工大學光電信息學院畢業(yè)設(shè)計32附錄基于SOCKET網(wǎng)絡聊天系統(tǒng)源代碼CLASSS

溫馨提示

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

評論

0/150

提交評論