




已閱讀5頁(yè),還剩29頁(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)介
本科畢業(yè)設(shè)計(jì)(論文)題目企業(yè)內(nèi)部通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)院系計(jì)算機(jī)科學(xué)系專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)姓名學(xué)號(hào)指導(dǎo)教師教師職稱填寫日期2012年5月7日貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)摘要隨著企業(yè)的不斷增多,社會(huì)經(jīng)濟(jì)的飛速發(fā)展,越來(lái)越多的企業(yè)開始使用內(nèi)部通信軟件來(lái)解決人員的工作溝通問(wèn)題,它成本低,通信速度快,不僅方便人員的技術(shù)交流,還解決了電話的單線程通訊和費(fèi)用高昂等問(wèn)題。企業(yè)內(nèi)部通信軟件可以很好的解決企業(yè)內(nèi)部通信問(wèn)題,使每個(gè)員工都能及時(shí)的了解自己的工作內(nèi)容和獲取需要的資料,加強(qiáng)了團(tuán)隊(duì)的溝通。此系統(tǒng)基于UDP/IP協(xié)議,采用JAVA語(yǔ)言設(shè)計(jì)和實(shí)現(xiàn),使用ECLIPSE和WINDOWBUILDERPRO插件進(jìn)行開發(fā)。系統(tǒng)實(shí)現(xiàn)了信息通信、系統(tǒng)設(shè)置、搜索用戶、訪問(wèn)公共資源、互訪對(duì)方主機(jī)五大功能。本系統(tǒng)結(jié)構(gòu)清晰、界面友好、操作簡(jiǎn)單、通用性強(qiáng),可以大大提高了企業(yè)的工作效率。關(guān)鍵詞企業(yè);信息通信;JAVA;UDP/IP貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)IABSTRACTWITHTHEINCRESINGOFTHEENTERPRISES,ANDTHERAPIDECONOMICDEVELOPMENTOFSOCIETY,MOREANDMOREOFTHEENTERPRISESARESTARTINGTOUSEINTERNALCOMMUNICATIONSSOFTWARESOLVINGCOMMUNICATIONPROBLEMOFSTAFFITISLOWCOST,HIGHSPEEDCOMMUNICATIONS,NOTONLYFACILITATETHETECHNOLOGYTRANSFERBUTALSOSOLVETHESINGLETHREADEDCALLSCOMMUNICATIONANDCOSTLYPROBLEMSENTERPRISEINSTANTMESSAGINGSOFTWARECANSOLVEINTERNALCOMMUNICATIONPROBLEMS,SOTHATEVERYEMPLOYEEISABLETOUNDERSTANDTHEIRWORKCONTENTANDACCESSTOREQUIREDINFORMATIONENHANCECOMMUNICATIONBETWEENTHETEAMTHISSYSTEMBASEDONUDP/IP,USESTHEJAVALANGUAGEDESIGNANDIMPLEMENTATION,USEECLIPSEANDWINDOWBUILDERPROPLUGINDEVELOPMENTTHISSYSTEMREALIZESFIVEFUNCTIONSINCLUDINGTHEINFORMATIONCOMMUNICATION,SYSTEMSETTINGS,SEARCHUSERS,VISITTHEPUBLICRESOURCESANDOTHERHOSTVISITS,THISSYSTEMSTRUCTUREISCLEAR,FRIENDLYINTERFACE,EASYTOOPERATESTRONGUNIVERSABILITY,ITCOULDBEGREATLYIMPROVETHEEFFICIENCYOFENTERPRISESKEYWORDSENTERPRISE;INFORMATIONCOMMUNICATION;JAVA;UDP/IP貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)II目錄摘要IABSTRACTII第一章前言1第二章概述2第一節(jié)開發(fā)背景2第二節(jié)課題現(xiàn)狀2第三節(jié)軟硬件需求2第三章系統(tǒng)分析3第一節(jié)需求功能分析3第二節(jié)可行性分析3一、可行性要求、目標(biāo)3二、技術(shù)可行性分析3三、經(jīng)濟(jì)可行性分析4第四章系統(tǒng)設(shè)計(jì)5第一節(jié)系統(tǒng)目標(biāo)5第二節(jié)系統(tǒng)功能5第三節(jié)數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)5一、數(shù)據(jù)庫(kù)分析5二、企業(yè)內(nèi)部通信系統(tǒng)的ER圖6三、數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)7第五章詳細(xì)設(shè)計(jì)和代碼實(shí)現(xiàn)8第一節(jié)主窗體模塊的設(shè)計(jì)與實(shí)現(xiàn)8一、界面設(shè)計(jì)8二、實(shí)現(xiàn)過(guò)程8第二節(jié)公共模塊的設(shè)計(jì)與實(shí)現(xiàn)10一、界面設(shè)計(jì)10二、實(shí)現(xiàn)過(guò)程11第三節(jié)系統(tǒng)托盤模塊的設(shè)計(jì)與實(shí)現(xiàn)13一、界面設(shè)計(jì)13二、實(shí)現(xiàn)過(guò)程13第四節(jié)系統(tǒng)工具模塊的設(shè)計(jì)與實(shí)現(xiàn)14一、界面設(shè)計(jì)14貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)III二、實(shí)現(xiàn)過(guò)程15第五節(jié)用戶管理模塊的設(shè)計(jì)與實(shí)現(xiàn)17一、界面設(shè)計(jì)17二、實(shí)現(xiàn)過(guò)程18第六節(jié)通信模塊的設(shè)計(jì)與實(shí)現(xiàn)20一、界面設(shè)計(jì)20二、實(shí)現(xiàn)過(guò)程23第六章總結(jié)27致謝28參考文獻(xiàn)29貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)0第一章前言從20世紀(jì)90年代開始,公共的即時(shí)消息和實(shí)時(shí)通信逐漸成為了人們重要的溝通工具,如MAIL、QQ、MSN等。但是,公共的即時(shí)信息給人們帶來(lái)方便的同時(shí),也帶來(lái)了極大的安全隱患,當(dāng)今網(wǎng)絡(luò),木馬程序、病毒和其他惡意軟件橫行,稍不注意,電腦就會(huì)中毒。對(duì)于企業(yè),使用公共的即時(shí)消息是一種安全威脅,企業(yè)的IT部門對(duì)于公共即時(shí)消息的使用計(jì)劃無(wú)法控制。公共的即時(shí)通信,正成為病毒和其他惡意軟件入侵企業(yè)計(jì)算機(jī)的一個(gè)渠道,這意味著最終用戶能夠把敏感的數(shù)據(jù)外傳。為此企業(yè)內(nèi)部通信工具應(yīng)運(yùn)而生,本工具從源頭上解決了這一隱患,專為企業(yè)而設(shè)計(jì),通信服務(wù)器就直接置于企業(yè)內(nèi)部,所有信息由企業(yè)自己管理,讓企業(yè)以更安全、更可伸縮和更易于管理的方式靈活方便地使用協(xié)同和通信服務(wù)的功能。企業(yè)內(nèi)部通信工具可以很好的解決企業(yè)通信問(wèn)題,面對(duì)工作目標(biāo)和團(tuán)隊(duì)工作中可能出現(xiàn)的問(wèn)題,必須加強(qiáng)團(tuán)隊(duì)的溝通,使每個(gè)員工都能及時(shí)地了解自己的工作內(nèi)容和獲取需要的資料。為解決這一問(wèn)題,開發(fā)一個(gè)界面友好、易于操作的內(nèi)部通信軟件成為企業(yè)的首選。本系統(tǒng)應(yīng)用了JDK60新增的系統(tǒng)托盤技術(shù)和JAVADB數(shù)據(jù)庫(kù)。系統(tǒng)托盤可以在程序主窗體最小化之后,使用托盤控制窗體的相應(yīng)操作,例如打開主窗體;JAVADB使用靈活,可以應(yīng)用到不同的系統(tǒng)平臺(tái)中,只要該平臺(tái)有支持JAVA的環(huán)境。整個(gè)系統(tǒng)從操作簡(jiǎn)便、界面友好、靈活、實(shí)用、安全的要求出發(fā),實(shí)現(xiàn)信息通信、系統(tǒng)設(shè)置、搜索用戶、訪問(wèn)公共資源、互訪對(duì)方主機(jī)等功能。貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)1第二章概述第一節(jié)開發(fā)背景近幾年,隨著網(wǎng)絡(luò)的迅速發(fā)展和全球信息化速度的加快,網(wǎng)絡(luò)通信已經(jīng)不算是新鮮事物了,但大多數(shù)網(wǎng)絡(luò)通信需要借助INTERNET上的服務(wù)器,這就給那些具有大規(guī)模內(nèi)部網(wǎng)絡(luò)的用戶造成了許多問(wèn)題,如遭遇到網(wǎng)絡(luò)攻擊、病毒入侵等等。由于互聯(lián)網(wǎng)上的網(wǎng)絡(luò)通信工具有時(shí)會(huì)給企業(yè)內(nèi)部信息交流帶來(lái)不便,所以為了方便企業(yè)內(nèi)部用戶之間的溝通、保證企業(yè)內(nèi)部局域網(wǎng)的安全,需要開發(fā)一個(gè)基于局域網(wǎng)的信息收發(fā)系統(tǒng)的即時(shí)通信工具。第二節(jié)課題現(xiàn)狀企業(yè)內(nèi)部通信系統(tǒng)是基于局域網(wǎng)的即時(shí)通信工具,可以說(shuō)是一個(gè)INTERNET通信工具的小規(guī)模版本,一般采用UDP或者TCP協(xié)議體系等來(lái)實(shí)現(xiàn),開發(fā)技術(shù)已經(jīng)比較成熟,國(guó)外的通信工具較有名的有ICQ、MSNMESSENGER、國(guó)產(chǎn)的QQ、新浪UC都實(shí)現(xiàn)了廣域網(wǎng)的即時(shí)通信。在最近幾年,國(guó)內(nèi)的局域網(wǎng)通信工具較有代表性有飛鴿傳書、飛秋,這兩款軟件的快速、實(shí)效、迷你、簡(jiǎn)單的特點(diǎn)受到了廣大企業(yè)的好評(píng)。這些工具的實(shí)現(xiàn)方式具體細(xì)節(jié)不易得之,但它無(wú)非是利用各種平臺(tái)上的網(wǎng)絡(luò)通信接口,基于TCP/IP或者UDP/IP協(xié)議架構(gòu)下的軟件產(chǎn)品。對(duì)于一個(gè)企業(yè)內(nèi)網(wǎng),這些功能的實(shí)現(xiàn)相比于廣域網(wǎng)更加簡(jiǎn)單。所以還是有很大研究?jī)r(jià)值的1。第三節(jié)軟硬件需求本系統(tǒng)運(yùn)行時(shí)需要以下條件。硬件平臺(tái)CPUPENTIUM418GHZ內(nèi)存128MB以上硬盤空間100MB軟件平臺(tái)操作系統(tǒng)WINDOWS2000、WINDOWSXP、WINDOWS2003等開發(fā)工具ECLIPSE、JDK60數(shù)據(jù)庫(kù)JAVADB貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)2第三章系統(tǒng)分析第一節(jié)需求功能分析本系統(tǒng)的設(shè)計(jì)目標(biāo)是實(shí)現(xiàn)一個(gè)企業(yè)內(nèi)部局域網(wǎng)通信系統(tǒng),企業(yè)內(nèi)部職工可以方便的進(jìn)行交流,可以大大的提高職工的工作效率。根據(jù)企業(yè)對(duì)局域網(wǎng)通信的需求,本系統(tǒng)主要包括信息通信、系統(tǒng)設(shè)置、搜索用戶、訪問(wèn)公共資源、訪問(wèn)對(duì)方主機(jī)五大功能。各功能概述信息通信信息通信是企業(yè)內(nèi)部通信系統(tǒng)的核心功能,它用于不同職工之間的通信,這種通信方式能夠?qū)崿F(xiàn)多個(gè)職工之間的通信,而不存在類似電話占線的問(wèn)題,增加了任務(wù)分配的新方式,從而提高企業(yè)的工作效率。系統(tǒng)設(shè)置系統(tǒng)設(shè)置用于設(shè)置用戶界面、公共路徑、公告欄等的功能。用戶搜索用戶搜索用于搜索企業(yè)局域網(wǎng)內(nèi)的其他用戶,系統(tǒng)會(huì)根據(jù)用戶所設(shè)置的IP搜索范圍搜索所有計(jì)算機(jī)上的用戶。訪問(wèn)公共資源訪問(wèn)公共資源用于實(shí)現(xiàn)企業(yè)內(nèi)部公共服務(wù)器上資源訪問(wèn)的功能。訪問(wèn)對(duì)方主機(jī)訪問(wèn)對(duì)方主機(jī)用于兩人聊天情況下對(duì)對(duì)方主機(jī)的訪問(wèn)和控制的功能。第二節(jié)可行性分析一、可行性要求、目標(biāo)企業(yè)內(nèi)部通信系統(tǒng)必須提供網(wǎng)絡(luò)通信功能,在通信過(guò)程中禁止使用聊天表情、文件傳送等功能,避免資料外泄,或因發(fā)送錯(cuò)誤而導(dǎo)致上機(jī)資料的丟失以及其他損失。最重要的是必須適應(yīng)任何操作系統(tǒng),也就是實(shí)現(xiàn)跨平臺(tái)技術(shù),因?yàn)槠髽I(yè)內(nèi)部的工作需要,工作環(huán)境中使用了多個(gè)操作系統(tǒng)來(lái)完成不同的工作。另外,系統(tǒng)不需要使用服務(wù)器中轉(zhuǎn)和記錄通信內(nèi)容,可以獨(dú)立完成通信任務(wù),排除職工對(duì)領(lǐng)導(dǎo)監(jiān)視工作進(jìn)度等行為的逆反心理。企業(yè)內(nèi)部通信系統(tǒng)的目標(biāo)是實(shí)現(xiàn)企業(yè)的信息化通信,提高企業(yè)通信能力,提高任務(wù)理解和執(zhí)行能力,減少?zèng)]有必要的人員流動(dòng)和資金損耗,以最快的速度提升企業(yè)的市場(chǎng)競(jìng)爭(zhēng)力。二、技術(shù)可行性分析局域網(wǎng)通信系統(tǒng)的技術(shù)已經(jīng)非常成熟,首先,從硬件上講,計(jì)算機(jī)硬件速度現(xiàn)在已貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)3經(jīng)不是問(wèn)題,高速便捷的網(wǎng)絡(luò)已經(jīng)十分普遍,這些為本系統(tǒng)的運(yùn)行打下堅(jiān)實(shí)的基礎(chǔ)。從軟件的角度上講,數(shù)據(jù)庫(kù)技術(shù)已經(jīng)相當(dāng)成熟(目前用得比較多的有SQLSERVER,JAVADB等),并且處理能力也非常強(qiáng),這為海量數(shù)據(jù)的存儲(chǔ)和處理打下了堅(jiān)實(shí)的基礎(chǔ),同時(shí),使用JAVA開發(fā)圖形界面程序也相當(dāng)普遍。有了這些技術(shù)的支持,我們成功開發(fā)一個(gè)局域網(wǎng)通信系統(tǒng)沒(méi)有任何技術(shù)風(fēng)險(xiǎn)。三、經(jīng)濟(jì)可行性分析經(jīng)濟(jì)可行性主要是對(duì)項(xiàng)目的經(jīng)濟(jì)效益進(jìn)行評(píng)價(jià)。本系統(tǒng)開發(fā)完成后可縮減工作時(shí)間,提高工作效率,而且簡(jiǎn)單易操作,不需對(duì)使用人員進(jìn)行培訓(xùn),不管是在資金上還是效率上都能達(dá)到預(yù)期的效果。本系統(tǒng)開發(fā)經(jīng)費(fèi)對(duì)于企業(yè)在經(jīng)濟(jì)上是可以接受的,并且本系統(tǒng)實(shí)施后可以顯著提高工作效率,有助于企業(yè)的信息化管理,所以該企業(yè)內(nèi)部通信系統(tǒng)在經(jīng)濟(jì)上是可行的。貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)4第四章系統(tǒng)設(shè)計(jì)第一節(jié)系統(tǒng)目標(biāo)系統(tǒng)根據(jù)企業(yè)對(duì)內(nèi)部通信系統(tǒng)的要求,本系統(tǒng)可以實(shí)現(xiàn)以下目標(biāo)1操作簡(jiǎn)單、界面簡(jiǎn)潔美觀。2更方便訪問(wèn)企業(yè)公共資源。3及時(shí)顯示企業(yè)公共信息。4在通信窗口顯示對(duì)方IP信息。5局域網(wǎng)內(nèi)網(wǎng)用戶自動(dòng)搜索。6系統(tǒng)運(yùn)行穩(wěn)定、安全可靠。第二節(jié)系統(tǒng)功能系統(tǒng)功能結(jié)構(gòu)圖如下企業(yè)內(nèi)部通信系統(tǒng)信息通信系統(tǒng)設(shè)置用戶搜索訪問(wèn)公共資源訪問(wèn)對(duì)方主機(jī)圖41系統(tǒng)功能結(jié)構(gòu)圖第三節(jié)數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)一、數(shù)據(jù)庫(kù)分析該系統(tǒng)是一個(gè)桌面應(yīng)用程序,它不像WEB應(yīng)用那樣需要配置到指定的服務(wù)器上,所貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)5以數(shù)據(jù)庫(kù)和該系統(tǒng)應(yīng)存在于同一計(jì)算機(jī)中,這樣,不僅節(jié)省了開銷,而且還提高了系統(tǒng)的安全性。該系統(tǒng)所用數(shù)據(jù)庫(kù)為JAVADB數(shù)據(jù)庫(kù)。由于該數(shù)據(jù)庫(kù)的運(yùn)行環(huán)境平臺(tái)要求較低,一般的電腦都可以滿足它的硬件條件2。二、企業(yè)內(nèi)部通信系統(tǒng)的ER圖該系統(tǒng)的實(shí)體包括用戶和窗口位置兩個(gè)實(shí)體,分別記錄著通信窗口的絕對(duì)位置和用戶的信息。(1)用戶實(shí)體用戶實(shí)體主要包括IP信息、PC名稱、用戶信息、系統(tǒng)信息等,它記錄了搜索到的用戶和所有的用戶信息。用戶實(shí)體的ER圖如下所示用戶實(shí)體頭像提示文本用戶信息IP地址主機(jī)名稱圖42用戶實(shí)體ER圖2窗口位置實(shí)體窗口位置實(shí)體記錄著窗體最后的移動(dòng)位置和窗體大小等信息,主要包括窗體位置的橫坐標(biāo)和豎坐標(biāo)(下圖用X、Y軸坐標(biāo)表示)、窗體的高度和寬度。窗口實(shí)體的ER圖如下所示貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)6X坐標(biāo)窗口實(shí)體Y坐標(biāo)窗體高度窗體寬度圖43窗口實(shí)體ER圖三、數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)在該系統(tǒng)中的數(shù)據(jù)庫(kù)DB_EQ包含兩個(gè)數(shù)據(jù)表,分別為用戶信息表TB_USERS和窗體位置信息表TB_LOCATION。(1)TB_USERS用戶信息表用戶信息表用來(lái)保存企業(yè)內(nèi)的通信用戶,表TB_USERS如下所示表41用戶信息表TB_USERS字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值描述IPVARCHAR(16)NOYES用戶IPHOSTVARCHAR(30)YESNONULL主機(jī)名稱NAMEVARCHAR(20)YESNONULL姓名TOOLTIPVARCHAR(50)YESNONULL提示文本ICONVARCHAR(50)YESNONULL頭像圖標(biāo)(2)TB_LOCATION(窗體位置信息表)窗體位置表用來(lái)保存窗體的位置和大小,表TB_LOCATION如下所示表42窗體位置信息表TB_LOCATION字段名數(shù)據(jù)類型是否為空是否主鍵默認(rèn)值描述XLOCATIONINTYESNONULLX軸坐標(biāo)YLOCATIONINTYESNONULLY軸坐標(biāo)HEIGHTINTYESNONULL窗體高度WIDTHINTYESNONULL窗體寬度貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)7第五章詳細(xì)設(shè)計(jì)和代碼實(shí)現(xiàn)第一節(jié)主窗體模塊的設(shè)計(jì)與實(shí)現(xiàn)一、界面設(shè)計(jì)主窗體界面是本系統(tǒng)的用戶列表,它由用戶列表、系統(tǒng)選項(xiàng)卡、公告提示等組成。其中系統(tǒng)選項(xiàng)卡用于切換不同的管理界面,包括系統(tǒng)設(shè)計(jì)和系統(tǒng)工具界面3。主窗體的效果圖如下所示圖51主窗體界面示意圖二、實(shí)現(xiàn)過(guò)程主窗體實(shí)現(xiàn)部分包括創(chuàng)建主窗體和記錄窗體位置。其中創(chuàng)建主窗體的步驟如下1創(chuàng)建JXCFRAME類,在類中創(chuàng)建窗體的對(duì)象,為窗體添加選項(xiàng)卡面板,并添加用戶列表、系統(tǒng)工具、系統(tǒng)設(shè)置3個(gè)選項(xiàng)卡和狀態(tài)欄標(biāo)簽、公告按鈕等屬性。在構(gòu)造方法貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)8中初始化窗體上的控件。數(shù)據(jù)庫(kù)操作類、首選項(xiàng)對(duì)象等屬性,為窗體添加時(shí)間監(jiān)聽(tīng)器、為公告信息按鈕添加監(jiān)聽(tīng)器等。2初始化SOCKET服務(wù)器,指定端口為1111,如初始化失敗,則提示服務(wù)器端口被占用或本軟件已運(yùn)行,并退出本系統(tǒng)。用于接收其他用戶發(fā)送的通信信息。關(guān)鍵代碼如下TRY/啟動(dòng)通訊服務(wù)端口SSNEWDATAGRAMSOCKET1111CATCHSOCKETEXCEPTIONE2IFE2GETMESSAGESTARTSWITH“ADDRESSALREADYINUSE“SHOWMESSAGEDIALOG“服務(wù)端口被占用,或者本軟件已經(jīng)運(yùn)行?!癝YSTEMEXIT03CHECKPLACARD方法,用于檢測(cè)系統(tǒng)公告,當(dāng)公告路徑中存在系統(tǒng)公告時(shí),將從文件中獲取完整信息,調(diào)用PUSHMESSAGE()方法將信息壓入公告信息棧中。關(guān)鍵代碼如下PRIVATEVOIDCHECKPACARD/檢測(cè)公告信息方法STRINGPLACARDDIRPREFERENCESGET“PLACARDPATH“,NULLIFPLACARDDIRNULLPUSHMESSAGE“未設(shè)置公告路徑“RETURNFILEPLACARDNEWFILEPLACARDDIRTRYIFPLACARDEXISTSSCANNERSCNEWSCANNERNEWFILEINPUTSTREAMPLACARDWHILESCHASNEXTLINEPLACARDSTRAPPENDSCNEXTLINEPUSHMESSAGEPLACARDSTRTOSTRINGCATCHFILENOTFOUNDEXCEPTIONEPUSHMESSAGE“公告路徑錯(cuò)誤,或公告文件不存在“4INITUSERINFOBUTTON()方法用于初始化本地用戶信息,并在主窗體左上角顯示本地貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)9用戶的頭像和名稱,會(huì)在用戶更改本地用戶名稱時(shí)同步更新。5MAIN()方法,本方法首先獲取用戶設(shè)置的界面外觀,然后調(diào)用UIMANAGER類設(shè)置指定的外觀,生成主窗體對(duì)象。最后初始化服務(wù)器端口和系統(tǒng)欄圖標(biāo)。關(guān)鍵代碼如下PUBLICSTATICVOIDMAINSTRINGARGSTRYSTRINGLAFPREFERENCESGET“LOOKANDFEEL“,“JAVA默認(rèn)“/獲取用戶選擇的外觀IFLAFINDEXOF“當(dāng)前系統(tǒng)“1UIMANAGERSETLOOKANDFEELUIMANAGERGETSYSTEMLOOKANDFEELCLASSNAME/設(shè)置外觀EQFRAMENEWEQFRAMESETVISIBLETRUE/顯示窗體FRAMESYSTEMTRAYINITIAL/初始化系統(tǒng)欄FRAMESERVER/啟動(dòng)服務(wù)端口FRAMECHECKPLACARD/檢測(cè)系統(tǒng)公告CATCHEXCEPTIONEEPRINTSTACKTRACE記錄窗體的位置步驟如下1為窗體添加監(jiān)聽(tīng)器,當(dāng)改變窗體的位置和大小時(shí),將調(diào)用SAVELOCATION方法將窗體和位置大小保存到數(shù)據(jù)庫(kù)中。2SAVELOCATION,該方法中調(diào)用了DAO類中的UPDATELOCATION將窗體的位置和大小保存到數(shù)據(jù)庫(kù)中。第二節(jié)公共模塊的設(shè)計(jì)與實(shí)現(xiàn)一、界面設(shè)計(jì)在本系統(tǒng)的項(xiàng)目空間中,有部分模塊是公用的,或者多個(gè)模塊甚至整個(gè)系統(tǒng)的配置信息是被多個(gè)模塊重復(fù)調(diào)用完成業(yè)務(wù)的邏輯。其中有關(guān)數(shù)據(jù)庫(kù)的操作、連接數(shù)據(jù)庫(kù)、創(chuàng)建本機(jī)IP的默認(rèn)用戶(并添加到數(shù)據(jù)庫(kù)中)、從數(shù)據(jù)庫(kù)中獲取窗體位置和大小、添加或刪除指定用戶、更新用戶信息等4。貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)10二、實(shí)現(xiàn)過(guò)程公共模塊包括數(shù)據(jù)庫(kù)操作類和系統(tǒng)工具類。其中DAO類主要負(fù)責(zé)有關(guān)數(shù)據(jù)庫(kù)的操作,該類在構(gòu)造方法中驅(qū)動(dòng)并連接數(shù)據(jù)庫(kù),然后將構(gòu)造方法設(shè)置為PRIVATE私有屬性,通過(guò)靜態(tài)的GETDAO獲取DAO類的實(shí)例對(duì)象,這是簡(jiǎn)單的單例模式。在連接數(shù)據(jù)庫(kù)時(shí),可以指定CREATE參數(shù)為TRUE直接創(chuàng)建數(shù)據(jù)庫(kù),但在此之前需要調(diào)用DBEXIST方法判斷數(shù)據(jù)庫(kù)是否存在。DAO類的關(guān)鍵代碼如下PUBLICCLASSDAO/數(shù)據(jù)庫(kù)驅(qū)動(dòng)PRIVATESTATICFINALSTRINGDRIVER“ORGAPACHEDERBYJDBCEMBEDDEDDRIVER“PRIVATESTATICSTRINGURL“JDBCDERBYDB_EQ“/數(shù)據(jù)庫(kù)URLPRIVATESTATICCONNECTIONCONNNULL/數(shù)據(jù)庫(kù)連接PRIVATESTATICDAODAONULLPRIVATEDAOTRYCLASSFORNAMEDRIVERIFDBEXISTSCONNDRIVERMANAGERGETCONNECTIONURL“CREATETRUE“CREATETABLEELSECONNDRIVERMANAGERGETCONNECTIONURLADDDEFUSERCATCHEXCEPTIONEEPRINTSTACKTRACEJOPTIONPANESHOWMESSAGEDIALOGNULL,“數(shù)據(jù)庫(kù)連接異常,或者本軟件已經(jīng)運(yùn)行。“SYSTEMEXIT0PRIVATEBOOLEANDBEXISTS/測(cè)試數(shù)據(jù)庫(kù)是否存在BOOLEANBEXISTSFALSEFILEDBFILEDIRNEWFILE“DB_EQ“IFDBFILEDIREXISTS貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)11BEXISTSTRUERETURNBEXISTSPUBLICSTATICDAOGETDAO/獲取DAO實(shí)例IFDAONULLDAONEWDAORETURNDAOPUBLICLISTGETUSERS/獲取所有用戶LISTUSERSNEWARRAYLISTTRYSTRINGSQL“SELECTFROMTB_USERS“STATEMENTSTMCONNCREATESTATEMENTRESULTSETRSSTMEXECUTEQUERYSQLWHILERSNEXTUSERUSERNEWUSERUSERSETIPRSGETSTRING1USERSETHOSTRSGETSTRING2USERSETNAMERSGETSTRING3USERSETTIPTEXTRSGETSTRING4USERSETICONRSGETSTRING5USERSADDUSERRSCLOSECATCHSQLEXCEPTIONEEPRINTSTACKTRACERETURNUSERSRESOURCE類是企業(yè)內(nèi)部通信系統(tǒng)中的工具類,該類中的方法都是靜態(tài)的,可以直接調(diào)用,而不用創(chuàng)建RESOURCE類的實(shí)例對(duì)象。這些工具方法包括搜索用戶的方法、登錄公共資源的方法、信使群發(fā)的方法和單條信息發(fā)送的方法。貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)12第三節(jié)系統(tǒng)托盤模塊的設(shè)計(jì)與實(shí)現(xiàn)一、界面設(shè)計(jì)系統(tǒng)托盤模塊用于定義系統(tǒng)欄圖標(biāo)。本系統(tǒng)的主窗體是繼承對(duì)話框窗體編寫的,該窗體在系統(tǒng)任務(wù)欄不會(huì)顯示任務(wù)標(biāo)題,如果主窗體最小化之后將會(huì)隱藏,這時(shí)必須使用快捷鍵或者系統(tǒng)托盤中的圖標(biāo)執(zhí)行顯示窗體的命令。系統(tǒng)托盤包含相應(yīng)的菜單,右鍵點(diǎn)擊會(huì)彈出選擇菜單,菜單包括三個(gè)選項(xiàng),分別是“訪問(wèn)服務(wù)器”、“打開”、“退出”。系統(tǒng)托盤的設(shè)計(jì)效果圖如下所示圖52系統(tǒng)托盤示意圖二、實(shí)現(xiàn)過(guò)程在JDK60中,AWT新增加了SYSTEMTRAY類和TRAYICON類,它們可以在系統(tǒng)托盤區(qū)創(chuàng)建一個(gè)托盤程序。SYSTEMTRAY類表示桌面右下角的系統(tǒng)托盤,系統(tǒng)托盤由運(yùn)行在桌面上的所有應(yīng)用程序共享,可以使用GETSYSTEMTRAY方法獲取系統(tǒng)托盤對(duì)象,該方法總是對(duì)每個(gè)應(yīng)用程序返回相同的實(shí)例。并不是所有的操作系統(tǒng)都支持系統(tǒng)托盤,如果當(dāng)前系統(tǒng)不支持托盤的話,該方法將自動(dòng)拋出異常。為避免程序出現(xiàn)錯(cuò)誤,在獲取系統(tǒng)托盤實(shí)例之前,需要檢查系統(tǒng)托盤是否支持??梢哉{(diào)用ISSUPPORT來(lái)實(shí)現(xiàn)5。SYSTEMTRAY類可以包含一個(gè)或多個(gè)TRAYICON類的實(shí)例,即系統(tǒng)欄圖標(biāo),可以使用ADD將它們添加到托盤,TRAYICON對(duì)象由圖像、彈出菜單和一組相關(guān)監(jiān)聽(tīng)器組成。創(chuàng)建系統(tǒng)托盤的關(guān)鍵代碼如下TRYSTRINGTITLE“EQ通訊軟件“/系統(tǒng)欄提示文本的標(biāo)題STRINGCOMPANY“貴州省XXX科技有限公司“/系統(tǒng)欄提示文本SYSTEMTRAYSYSTRAYSYSTEMTRAYGETSYSTEMTRAY/獲取系統(tǒng)托盤對(duì)象IMAGEIMAGETOOLKITGETDEFAULTTOOLKITGETIMAGEEQCLASSGETRESOURCE“/ICONS/SYSTRAYPNG“/系統(tǒng)欄圖標(biāo)TRAYICONNEWTRAYICONIMAGE,TITLE“N“COMPANY,CREATEMENU/創(chuàng)建系統(tǒng)欄圖標(biāo)對(duì)象貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)13TRAYICONSETIMAGEAUTOSIZETRUE/設(shè)置自動(dòng)大小TRAYICONADDACTIONLISTENERNEWSYSTRAYACTIONLISTENER/添加監(jiān)聽(tīng)器SYSTRAYADDTRAYICON/添加系統(tǒng)欄圖標(biāo)到系統(tǒng)托盤TRAYICONDISPLAYMESSAGETITLE,COMPANY,MESSAGETYPEINFOCATCHEXCEPTIONEEPRINTSTACKTRACE第四節(jié)系統(tǒng)工具模塊的設(shè)計(jì)與實(shí)現(xiàn)一、界面設(shè)計(jì)本系統(tǒng)的工具模塊起到維護(hù)系統(tǒng)的作用,包括更換程序外觀、。設(shè)置IP范圍、用戶搜索和系統(tǒng)更新、設(shè)置系統(tǒng)公告路徑、設(shè)置公共程序路徑、系統(tǒng)登錄等功能。在該系統(tǒng)第一次運(yùn)行的時(shí),用戶搜索功能可以搜索內(nèi)部網(wǎng)絡(luò)中所有正在運(yùn)行的計(jì)算機(jī)。本系統(tǒng)工具模塊中使用了JAVA的LOOKANDFEEL外觀技術(shù),不同的外觀中控件的外觀也會(huì)不同,就比如我們常用的電腦中,WINDOWS經(jīng)典樣式和WINDOWSXP樣式外觀的按鈕、列表、菜單、工具欄甚至窗體的外觀都不相同。在本系統(tǒng)中提供了“當(dāng)前系統(tǒng)”和“JAVA默認(rèn)值”兩個(gè)外觀選項(xiàng),其中“JAVA默認(rèn)值”是SWING默認(rèn)的外觀,不需要特別設(shè)置,而“當(dāng)前系統(tǒng)”外觀需要使用相應(yīng)的方法獲取當(dāng)前系統(tǒng)的外觀名稱,然后將該外觀應(yīng)用于默認(rèn)的外觀6。系統(tǒng)工具的設(shè)計(jì)效果圖如下所示貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)14圖53系統(tǒng)工具界面示意圖二、實(shí)現(xiàn)過(guò)程(1)CREATESYSTOOLPANEL方法,用于創(chuàng)建系統(tǒng)工具選項(xiàng)卡,在該選項(xiàng)卡中包括界面選擇、用戶搜索和系統(tǒng)操作3部分,其中系統(tǒng)操作用于程序更新,它們都被添加到系統(tǒng)工具面板中,CREATESYSTOOLPANEL方法必須設(shè)置好面板的布局和初始化工作。關(guān)鍵代碼如下PRIVATEJSCROLLPANECREATEUSERLIST/用戶列表面板JSCROLLPANESCROLLPANENEWJSCROLLPANESCROLLPANESETHORIZONTALSCROLLBARPOLICYSCROLLPANECONSTANTSHORIZONTAL_SCROLLBAR_NEVERADDUSERPOPUPCHATTREE,GETPOPUPMENU/為用戶添加彈出菜單SCROLLPANESETVIEWPORTVIEWCHATTREESCROLLPANESETBORDERNEWEMPTYBORDER0,0,0,0CHATTREEADDMOUSELISTENERNEWCHATTREEMOUSELISTENER貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)15RETURNSCROLLPANE(2)在CREATESYSTOOLPANEL方法中創(chuàng)建界面選擇部分,該部分以列表控件顯示了兩種外觀選擇,當(dāng)用戶選擇其中以種外觀并單擊“確定”按鈕之后,選擇外觀會(huì)保存到首選項(xiàng)中,然后提示重新運(yùn)行本軟件。(3)在CREATESYSTOOLPANEL方法中創(chuàng)建用戶搜索部分,包括搜索列表、搜索進(jìn)度條和“搜索新用戶”3個(gè)控件,當(dāng)單擊“搜索新用戶”按鈕時(shí),系統(tǒng)會(huì)根據(jù)用戶在系統(tǒng)設(shè)置界面所設(shè)置的IP搜索范圍搜索所有計(jì)算機(jī)信息,并創(chuàng)建相應(yīng)的用戶對(duì)象,然后保存到數(shù)據(jù)庫(kù)中。(4)創(chuàng)建“搜索新用戶”按鈕的事件監(jiān)聽(tīng)器SEARCHUSERACTIONLISTENER類,調(diào)用RESOURCE工具類的SEARCHUSERS方法搜索指定IP范圍內(nèi)的所有用戶。系統(tǒng)工具類中的SEARCHUSERS()方法,該方法用于搜索局域網(wǎng)內(nèi)的通信用戶,也就是搜索企業(yè)內(nèi)的所有職工。本方法將獲取用戶指定的IP范圍,并在該范圍內(nèi)搜索所有可以訪問(wèn)的計(jì)算機(jī),如果用戶沒(méi)有指定IP范圍,系統(tǒng)默認(rèn)的是192168011921680255。關(guān)鍵代碼如下TRYFORINTLIPSINT0L添加“IP“CATCH(EXCEPTIONE)EPRINTSTACKTRACE第五節(jié)用戶管理模塊的設(shè)計(jì)與實(shí)現(xiàn)一、界面設(shè)計(jì)用戶管理模塊類似于聊天軟件的好友列表,其中包含所有用戶信息,另外在用戶名稱上單擊鼠標(biāo)右鍵,會(huì)彈出相應(yīng)的管理菜單,在該菜單中包含“添加用戶”、“更名”、“刪除用戶”、“信使群發(fā)(在沒(méi)有多選用戶的情況下無(wú)法進(jìn)行信使群發(fā))”、“訪問(wèn)主機(jī)資源”和“訪問(wèn)公共程序”,其中“訪問(wèn)主機(jī)資源”是訪問(wèn)該用戶的共享文件夾7。界面設(shè)計(jì)的效果圖如下所示圖54用戶管理界面示意圖貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)17二、實(shí)現(xiàn)過(guò)程(1)創(chuàng)建USERTREERANDERER類,該類繼承JPANEL類成為一個(gè)面板控件,同時(shí)該類也實(shí)現(xiàn)了TREECELLRENDERER接口成為樹節(jié)點(diǎn)的渲染器。該類的構(gòu)造方法接受3個(gè)圖標(biāo)參數(shù),分別用于樹節(jié)點(diǎn)的打開、關(guān)閉和葉節(jié)點(diǎn)的圖標(biāo)。(2)在USERTREERANDERER類中的GETTREECELLRENDERERCOMPONENT方法,渲染樹節(jié)點(diǎn)的界面樣式。本方法獲取主窗體的寬度,并使用該寬度設(shè)置節(jié)點(diǎn)的寬度,是節(jié)點(diǎn)與窗體同寬度,當(dāng)選擇某個(gè)節(jié)點(diǎn)時(shí),該方法將使用指定顏色繪制節(jié)點(diǎn)的邊框,以突出該節(jié)點(diǎn)被選擇的效果。(3)創(chuàng)建CHATTREE類,該類繼承JTREE自定義的樹控件,并且使用了之前定義的USERTREERANDERER樹節(jié)點(diǎn)渲染器,SORTUSERS方法,此方法是一個(gè)內(nèi)部線程,該線程獲取本地的IP地址,使用該地址從數(shù)據(jù)庫(kù)中獲取本地用戶對(duì)象,并將本地用戶設(shè)置在用戶列表首位。然后從數(shù)據(jù)庫(kù)中獲取其它用戶對(duì)象。使第一個(gè)用戶處于被選擇狀態(tài),并更新?tīng)顟B(tài)欄的用戶人數(shù)。關(guān)鍵代碼如下PRIVATESYNCHRONIZEDVOIDSORTUSERS/排序用戶列表NEWTHREADNEWRUNNABLEPUBLICVOIDRUNTRYTHREADSLEEP100ROOTREMOVEALLCHILDRENSTRINGIPINETADDRESSGETLOCALHOSTGETHOSTADDRESS/獲取本地IPUSERLOCALUSERDAOGETUSERIP/從數(shù)據(jù)庫(kù)中獲取自己的信息IFLOCALUSERNULL/把自己顯示在首位DEFAULTMUTABLETREENODENODENEWDEFAULTMUTABLETREENODELOCALUSERROOTADDNODEUSERMAPDAOGETUSERSITERATORITERATORUSERMAPITERATORWHILEITERATORHASNEXT/遍歷用戶集合USERUSERITERATORNEXTIFUSERGETIPEQUALSLOCALUSERGETIPCONTINUE貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)18ROOTADDNEWDEFAULTMUTABLETREENODEUSER/添加用戶到根節(jié)點(diǎn)TREEMODELRELOADCHATTREETHISSETSELECTIONROW0/使第一個(gè)節(jié)點(diǎn)被選擇IFEQNULLEQSETSTATIC“總?cè)藬?shù)“GETROWCOUNT/更新?tīng)顟B(tài)欄標(biāo)簽CATCHEXCEPTIONEEPRINTSTACKTRACESTART(4)在CHATTREE中的DELUSER方法,用于刪除當(dāng)前用戶列表中選擇的用戶對(duì)象。該方法首先獲取選擇的樹節(jié)點(diǎn),從該節(jié)點(diǎn)中獲取綁定的用戶對(duì)象,經(jīng)用戶確認(rèn)后刪除用戶信息,最后調(diào)用根節(jié)點(diǎn)的REMOVE方法刪除該用戶節(jié)點(diǎn)。另外是ADDUSER方法,用于在用戶列表中添加新用戶。本方法首先使用傳遞的IP參數(shù)到數(shù)據(jù)庫(kù)中獲取對(duì)應(yīng)的用戶對(duì)象,如成功獲取,說(shuō)明數(shù)據(jù)庫(kù)已存在該用戶,系統(tǒng)會(huì)提示“已存在”,當(dāng)確定該IP可以訪問(wèn)后,為該IP地址創(chuàng)建一個(gè)新的用戶并添加到數(shù)據(jù)庫(kù)中。關(guān)鍵代碼如下PUBLICBOOLEANADDUSERSTRINGIP,STRINGOPRATION/添加用戶TRYIFIPNULLRETURNFALSEUSEROLDUSERDAOGETUSERIP/從數(shù)據(jù)庫(kù)中獲取IP相同用戶IFOLDUSERNULL/如果數(shù)據(jù)庫(kù)中不存在該用戶INETADDRESSADDRINETADDRESSGETBYNAMEIP/該用戶可以訪問(wèn)IFADDRISREACHABLE1500STRINGHOSTADDRGETHOSTNAME/獲取它的主機(jī)名稱ROOTADDNEWDEFAULTMUTABLETREENODENEWUSERHOST,IPUSERNEWUSERNEWUSER/創(chuàng)建新用戶對(duì)象NEWUSERSETIPIP/設(shè)置IPNEWUSERSETHOSTHOST/設(shè)置主機(jī)名稱NEWUSERSETNAMEHOST/設(shè)置用戶姓名NEWUSERSETICON“1GIF“/設(shè)置頭像DAOADDUSERNEWUSER/添加該用戶到數(shù)據(jù)庫(kù)中貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)19SORTUSERS/用于重新加載用戶列表IFOPRATIONEQUALS“SEARCH“JOPTIONPANESHOWMESSAGEDIALOGEQFRAME,“用戶“HOST“添加成功“,“添加用戶“,JOPTIONPANEINFORMATION_MESSAGERETURNTRUEELSE/如果該用戶IP不可訪問(wèn)IFOPRATIONEQUALS“SEARCH“/并且不是系統(tǒng)自動(dòng)搜索JOPTIONPANESHOWMESSAGEDIALOGEQFRAME,“檢測(cè)不到用戶IP“IP,“錯(cuò)誤添加用戶“,JOPTIONPANEERROR_MESSAGE/對(duì)話框提示錯(cuò)誤RETURNFALSEELSE/如果數(shù)據(jù)庫(kù)中存在該IP用戶IFOPRATIONEQUALS“SEARCH“/并且不是系統(tǒng)自動(dòng)搜索JOPTIONPANESHOWMESSAGEDIALOGEQFRAME,“已經(jīng)存在用戶IP“IP,“不能添加用戶“,JOPTIONPANEWARNING_MESSAGE/提示已存在RETURNFALSECATCHEXCEPTIONEEPRINTSTACKTRACERETURNFALSE第六節(jié)通信模塊的設(shè)計(jì)與實(shí)現(xiàn)一、界面設(shè)計(jì)通信模塊是本系統(tǒng)中的核心模塊,它用于局域網(wǎng)內(nèi)的用戶之間的通信,而卻這種通信方式能夠?qū)崿F(xiàn)多個(gè)用戶之間的通信,不會(huì)存在像我們打電話一樣時(shí)的占線問(wèn)題,增加了任務(wù)分配的方式。本模塊可以使用UDP協(xié)議和信史兩種方式發(fā)送信息8。通信的聊天界面設(shè)計(jì)效果圖如下所示貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)20圖57聊天界面示意圖我們通常所說(shuō)的通信工具,都是采用的客戶機(jī)/服務(wù)器C/S架構(gòu)的,C/S結(jié)構(gòu)是這樣的一種結(jié)構(gòu)它包括一個(gè)客戶機(jī)或前端,一個(gè)服務(wù)器或稱后端,客戶機(jī)的作用是訪問(wèn)和處理遠(yuǎn)程服務(wù)器上的數(shù)據(jù),服務(wù)器的作用是接收和處理客戶機(jī)的數(shù)據(jù)請(qǐng)求。有時(shí),可能有多個(gè)客戶向同一個(gè)服務(wù)器同時(shí)請(qǐng)求服務(wù),這就需要服務(wù)器決定怎樣處理這些請(qǐng)求。CLIENT/SERVER結(jié)構(gòu)是當(dāng)前數(shù)據(jù)庫(kù)應(yīng)用程序中極為流行的一種方式。尤其是網(wǎng)絡(luò)技術(shù)的發(fā)展,使得當(dāng)前很多系統(tǒng)都采用這種方式進(jìn)行構(gòu)造,其最大的優(yōu)點(diǎn)是將計(jì)算機(jī)工作任務(wù)分別由客戶端和服務(wù)器端來(lái)共同完成,這樣有利于充分合理的利用系統(tǒng)資源。另外它的服務(wù)器端還可以將信息集中起來(lái),任何客戶機(jī)都可以通過(guò)訪問(wèn)服務(wù)器而獲得所需的信息。CLIENT/SERVER模型最終可歸結(jié)為一種“請(qǐng)求/應(yīng)答”關(guān)系。一個(gè)請(qǐng)求總是首先被客戶發(fā)出,然后服務(wù)器總是被動(dòng)地接收請(qǐng)求,返回客戶需要的結(jié)果。在客戶發(fā)出一個(gè)請(qǐng)求之前,服務(wù)進(jìn)程一直處于休眠狀態(tài)。一個(gè)客戶提出請(qǐng)求后,服務(wù)進(jìn)程被“喚醒”并且為客戶提供服務(wù),對(duì)客戶的請(qǐng)求做出所需要的應(yīng)答8。其工作示意圖如下貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)21圖55C/S模式下的網(wǎng)絡(luò)拓?fù)鋱D但是本系統(tǒng)如果要做成C/S架構(gòu)的話,需要在局域網(wǎng)內(nèi)設(shè)置一個(gè)服務(wù)器,而在企業(yè)局域網(wǎng)內(nèi),網(wǎng)絡(luò)結(jié)構(gòu)不是集中式的而是分布式的,可能沒(méi)有一臺(tái)機(jī)器來(lái)充當(dāng)服務(wù)器這個(gè)角色,同樣用服務(wù)器會(huì)增加本系統(tǒng)的設(shè)置難度,不符合本系統(tǒng)方便、快捷的特色,同時(shí)增加服務(wù)器后,所有數(shù)據(jù)都會(huì)經(jīng)過(guò)服務(wù)器保存處理,需要有專人看管維護(hù)服務(wù)器,顯得更麻煩。所以本系統(tǒng)采用每個(gè)程序自己既充當(dāng)客戶機(jī),又充當(dāng)服務(wù)器,自己來(lái)維護(hù)網(wǎng)絡(luò)上的用戶列表,每?jī)蓚€(gè)客戶端進(jìn)行連接的時(shí)候都直接連通而不用增設(shè)服務(wù)器中轉(zhuǎn)。示意圖如下圖56無(wú)公共服務(wù)器模式下的網(wǎng)絡(luò)拓?fù)鋱D當(dāng)然,上述圖示只是通信數(shù)據(jù)的一個(gè)流向示意圖,不是真正的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),也就貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)22是說(shuō)其中的服務(wù)器可能只是裝了服務(wù)器軟件的一臺(tái)普通工作站。在底層的數(shù)據(jù)流向中,也就是網(wǎng)絡(luò)的物理連結(jié),并非我們這個(gè)軟件所能決定的,我們的所做都是在一個(gè)透明的數(shù)據(jù)通信層之上的。在該模塊中,使用基于UDP協(xié)議的數(shù)據(jù)報(bào)和套接字實(shí)現(xiàn)計(jì)算機(jī)之間的信息通信。UDP(USERDATAGRAMPROTOCOL)協(xié)議就是“用戶數(shù)據(jù)報(bào)協(xié)議”,它是一種無(wú)連接的協(xié)議,在該協(xié)議進(jìn)行數(shù)據(jù)傳輸時(shí),發(fā)送方只需要知道對(duì)方的IP地址和端口號(hào)就可以發(fā)送數(shù)據(jù)了,并不需要進(jìn)行連接,當(dāng)遠(yuǎn)程主機(jī)端口號(hào)處于監(jiān)聽(tīng)狀態(tài)時(shí),則UDP必須處于連接狀態(tài)。JAVA中對(duì)UDP數(shù)據(jù)報(bào)的發(fā)送和接收是通過(guò)DATAGRAMSOCKET類實(shí)現(xiàn)的,DATAGRAMPACKET類表示UDP數(shù)據(jù)包,它封裝了數(shù)據(jù)報(bào)的屬性和數(shù)據(jù)9。這兩個(gè)類的工作流程圖如下所示圖58DATAGAMSOCKET和DATAGRAMPACKET類的工作流程圖二、實(shí)現(xiàn)過(guò)程(1)創(chuàng)建TELFRAME類,在該類中集成JFRAME類實(shí)現(xiàn)SWING的窗體,定義窗體需要的所有控件,列入發(fā)送按鈕、接受信息的文本框、輸入發(fā)送信息的文本框、信使按鈕以及各種滾動(dòng)面板等,定義訪問(wèn)數(shù)據(jù)庫(kù)的DAO實(shí)例,在通信窗口右側(cè)顯示的用戶列表使用DAO實(shí)例從數(shù)據(jù)庫(kù)中獲取10。(2)GETINSTANCE方法,用于獲取唯一的窗體實(shí)例。該方法創(chuàng)建的所有窗體實(shí)例都DATAGRAMSOCKET端口1234DATAGRAMPACKET目的HOST4321DATAGRAMPACKET目的HOST4321DATAGRAMPACKET目的HOST4321DATAGRAMSOCKET端口4321DATAGRAMSOCKET端口1234DATAGRAMSOCKET端口4321DATAGRAMPACKET目的HOST4321貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)23會(huì)保存到MAP集合類的實(shí)例中,窗體的實(shí)例對(duì)象會(huì)一直保存在這個(gè)集合類中,并且用戶再次打開已存在的窗體時(shí),將直接從集合類中獲取,不再創(chuàng)建新的窗體實(shí)例。關(guān)鍵代碼如下PUBLICSTATICSYNCHRONIZEDTELFRAMEGETINSTANCEDATAGRAMSOCKETSSARG,DATAGRAMPACKETDP,CHATTREETREEARGSTRINGTMPIPDPGETADDRESSGETHOSTADDRESS/獲取數(shù)據(jù)報(bào)的IP地址IFINSTANCECONTAINSKEYTMPIP/如果集合中不存在該用戶窗體TELFRAMEFRAMENEWTELFRAMESSARG,DP,TREEARG/創(chuàng)建窗體實(shí)例INSTANCEPUTTMPIP,FRAME/將窗體實(shí)例保存到集合中FRAMERECEIVEINFOTREEARG/接受信息IFFRAMEISVISIBLE/如果窗體處于隱藏狀態(tài)FRAMESETVISIBLETRUE/顯示窗體FRAMESETSTATEJFRAMENORMALFRAMETOFRONT/將窗體放置在最前端RETURNFRAMEELSE/如果集合中包含該用戶窗體TELFRAMEFRAMEINSTANCEGETTMPIP/從集合中獲取該窗體實(shí)例FRAMESETBUFSDPGETDATAFRAMERECEIVEINFOTREEARG/接受信息IFFRAMEISVISIBLEFRAMESETVISIBLETRUE/顯示窗體FRAMESETSTATEJFRAMENORMALFRAMETOFRONTRETURNFRAME(3)在構(gòu)造方法中初始化TELFRAME類的所有控件屬性,該構(gòu)造方法接收DATAGRAMSOCKET、DATAGRAMPACKET和CHATTREE類的三個(gè)參數(shù),他們分別是數(shù)據(jù)SOCKET服務(wù)、數(shù)據(jù)報(bào)和用戶列表的實(shí)例對(duì)象。(4)RECEIVEINFO方法,用于接收其它用戶發(fā)送的通信信息。該方法中首先從數(shù)據(jù)報(bào)中獲取發(fā)送信息的用戶IP地址,然后從數(shù)據(jù)庫(kù)中獲取該IP用戶的姓名,同時(shí)將這些用戶IP、用戶姓名和發(fā)送時(shí)間以藍(lán)色字體顯示到信息文本框中,最后將數(shù)據(jù)報(bào)中的通信信息文本追加到信息文本框中。貴陽(yáng)學(xué)院畢業(yè)設(shè)計(jì)(論文)24關(guān)鍵代碼如下PRIVATEVOIDRECEIVEINFOFINALCHATTREETREE/接收信息IFBUFLENGTH0STRINGRTEXTNEWSTRINGBUFREPLACE“CHAR0,“STRINGHOSTADDRESSDPGETADDRESSGETHOSTADDRESSSTRINGINFODAOGETUSERHOSTADDRESSGETNAMEINFOINFO“NEWDATETOLOCALESTRING”APPENDRECEIVETEXTINFO,COLORBLUEAPPENDRECEIVETEXTRTEXT“N“,NULL(5)創(chuàng)建“發(fā)送”按鈕的事件監(jiān)聽(tīng)器SENDACTIONLISTENER類,它實(shí)現(xiàn)了ACTIONLISTENER接口,擁有處理按鈕事件的能力,它在ACTIONPERFORMED方法中獲取數(shù)據(jù)報(bào)中的通信信息。創(chuàng)建MESSAGEBUTTONACTION內(nèi)部類,該類是“信使”按鈕的事件
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織團(tuán)日活動(dòng)方案
- 公司熒光夜跑活動(dòng)方案
- 公司疫情理發(fā)活動(dòng)方案
- 公司溫情環(huán)節(jié)活動(dòng)方案
- 公司激勵(lì)經(jīng)銷商活動(dòng)方案
- 公司新年娛樂(lè)活動(dòng)方案
- 公司活動(dòng)創(chuàng)新活動(dòng)方案
- 公司線上中秋節(jié)活動(dòng)方案
- 公司月主體研討活動(dòng)方案
- 公司紀(jì)念畫冊(cè)策劃方案
- 病媒生物防治試題及答案
- 全屋智能合同樣本
- 城市居住區(qū)規(guī)劃設(shè)計(jì)規(guī)范
- 基于UHPC的蝶形腹板混凝土拱橋創(chuàng)新設(shè)計(jì)研究
- 口腔科針刺傷處理流程
- 互聯(lián)網(wǎng)居家護(hù)理服務(wù)匯報(bào)
- 臨時(shí)占地免責(zé)協(xié)議書
- 樹脂瓦施工方案
- 檔案管理員實(shí)操能力考試題試題及答案
- 2025年工會(huì)知識(shí)競(jìng)賽題庫(kù)200題及答案(完整版)
- 完整版高中古詩(shī)文必背72篇【原文+注音+翻譯】
評(píng)論
0/150
提交評(píng)論