freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-企業(yè)內(nèi)部通信系統(tǒng)(編輯修改稿)

2025-01-06 19:21 本頁面
 

【文章內(nèi)容簡介】 模塊是本系統(tǒng)中的核心模塊,它用于局域網(wǎng)內(nèi)的用戶之間的通信,而卻這種通信方式能夠?qū)崿F(xiàn)多個(gè)用戶之間的通信,不會存在像我們打電話一樣時(shí)的占線問題,增加了任務(wù)分配的方式 。本模塊可以使用 UDP 協(xié)議和信史兩種方式發(fā)送信息。 我們通常所說的通信工具,都是采用的客戶機(jī) /服務(wù)器 (C/S)架構(gòu)的, C/S 結(jié)構(gòu)是這樣的一種結(jié)構(gòu):它包括一個(gè)客戶機(jī) (或前端 ),一個(gè)服務(wù)器 (或稱后端 ),客戶機(jī)的作用是訪問和處理遠(yuǎn)程服務(wù)器上的數(shù)據(jù) ,服務(wù)器的作用是接收和處理客戶機(jī)的數(shù)據(jù)請求。有時(shí) ,可能有多個(gè)客戶向同一個(gè)服務(wù)器同時(shí)請求服務(wù) ,這就需要服務(wù)器決定怎樣處理這些請求。Client/Server 結(jié)構(gòu)是當(dāng)前數(shù)據(jù)庫應(yīng)用程序中極為流行的一種方式。尤其是網(wǎng)絡(luò)技術(shù)的發(fā)展 ,使得當(dāng)前很多系統(tǒng)都采用這種方式進(jìn)行構(gòu)造 ,其最大的優(yōu)點(diǎn)是將計(jì)算機(jī)工作任務(wù)分別由客戶端和服務(wù)器端來共同完 成 ,這樣有利于充分合理的利用系統(tǒng)資源。另外它的服務(wù)器端還可以將信息集中起來,任何客戶機(jī)都可以通過訪問服務(wù)器而獲得所需的信息。 Client/Server 模型最終可歸結(jié)為一種“請求 /應(yīng)答”關(guān)系。一個(gè)請求總是首先被客戶發(fā)出 ,然后服務(wù)器總是被動(dòng)地接收請求 ,返回客戶需要的結(jié)果。在客戶發(fā)出一個(gè)請求之前 ,服務(wù)進(jìn)程一直處于休眠狀態(tài)。一個(gè)客戶提出請求后 ,服務(wù)進(jìn)程被“喚醒”并且為客戶提供服務(wù) ,對客戶的請求做出所需要的應(yīng)答。其工作示意圖如下: 計(jì)算機(jī)信息工程學(xué)院本科畢業(yè) 10 圖 8 C/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)不是集中式的而是分布式的,可能沒有一臺機(jī)器來充當(dāng)服務(wù)器這個(gè)角色,同樣用服務(wù)器會增加本系統(tǒng)的設(shè)置難度,不符合本系統(tǒng)方便、快捷的特色,同時(shí)增加服務(wù)器后,所有數(shù)據(jù)都會經(jīng)過服務(wù)器保存處理, 需要有專人看管維護(hù)服務(wù)器,顯得更麻煩。所以本系統(tǒng)采用每個(gè)程序自己既充當(dāng)客戶機(jī),又 充當(dāng)服務(wù)器,自己來維護(hù)網(wǎng)絡(luò)上的用戶列表,每兩個(gè)客戶端進(jìn)行連接的時(shí)候都直接連通而不用增設(shè)服務(wù)器中轉(zhuǎn)。示意圖如下 : 圖 9 無 公共 服務(wù)器模式下的網(wǎng)絡(luò)拓?fù)鋱D 當(dāng)然,上述圖示只是通信數(shù)據(jù)的一個(gè)流向示意圖,不是真正的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),也就是說其中的服務(wù)器可能只是裝了服務(wù)器軟件的一臺普通工作站。在底層的數(shù)據(jù)流向中 ,也就是網(wǎng)絡(luò)的物理連結(jié),并非我們這個(gè)軟件所能決定的,我們的所做都是在一個(gè)透明的數(shù)據(jù)通計(jì)算機(jī)信息工程學(xué)院本科畢業(yè) 11 信層之上的 。 在該模塊中,使用基于 UDP 協(xié)議的數(shù)據(jù)報(bào)和套接字實(shí)現(xiàn)計(jì)算機(jī)之間的信息通信。 UDP( User Datagram Protocol)協(xié)議就是“用戶數(shù)據(jù)報(bào)協(xié)議”,它是一種無連接的協(xié)議,在該協(xié)議進(jìn)行數(shù)據(jù)傳輸時(shí),發(fā)送方只需要知道對方的 IP 地址和端口號就可以發(fā)送數(shù)據(jù)了,并不需要進(jìn)行連接,當(dāng)遠(yuǎn)程主機(jī)端口號出于監(jiān)聽狀態(tài)時(shí),則 UDP 必須出于連接狀態(tài)。 通信的聊天界面運(yùn)行效果如下所示: 圖 10 聊天界面示意圖 代碼實(shí)現(xiàn) 主窗體 模塊的實(shí)現(xiàn)過程 主窗體實(shí)現(xiàn)部分包括創(chuàng)建主窗體和記錄窗體位置 。 其中創(chuàng)建主窗體的步驟如下: (1)創(chuàng)建 JXCFrame 類,在類中創(chuàng)建窗體的對象,為窗體添加選項(xiàng)卡面板,并添加用戶列表、系統(tǒng)工具、系統(tǒng)設(shè)置 3 個(gè)選項(xiàng)卡和狀態(tài)欄標(biāo)簽、公告按鈕等屬性。 在構(gòu) 造方法中初始化窗體上的控件。數(shù)據(jù)庫操作類、首選項(xiàng)對象等屬性, 為窗體添加時(shí)間監(jiān)聽器、為公告信息按鈕添加監(jiān)聽器等。 (2)初始化 Socket 服務(wù)器,指定端口為 1111,如初始化失敗, 則提示 服務(wù)器端口被占計(jì)算機(jī)信息工程學(xué)院本科畢業(yè) 12 用或本軟件已運(yùn)行,并退出本系統(tǒng)。 用于接收其他用戶發(fā)送 的通信信息。 關(guān)鍵代碼如下: try {// 啟動(dòng)通訊服務(wù)端口 ss = new DatagramSocket(1111)。 } catch (SocketException e2) { if (().startsWith(Address already in use)) showMessageDialog(服務(wù)端口被占用 ,或者本軟件已經(jīng)運(yùn)行。 )。 (0)。 } (3) checkPlacard 方法,用于檢測系統(tǒng)公告, 當(dāng)公告路徑中存在系統(tǒng)公告是,將從文件中獲取完整信息,調(diào)用 pushMessage()方法將信息壓入公告信息棧中。關(guān)鍵代碼如下: private void checkpacard() { // 檢測公告信息方法 String placardDir = (placardPath, null)。 if (placardDir == null) { pushMessage(未設(shè)置公告路徑 )。 return。 } File placard = new File(placardDir)。 try { if (() amp。amp。 ()) { StringBuilder placardStr = new StringBuilder()。 Scanner sc = new Scanner(new FileInputStream(placard))。 while (()) { (())。 } pushMessage(())。 } catch (FileNotFoundException e) { pushMessage(公告路徑錯(cuò)誤,或公告文件不存在 )。 } (4)initUserInfoButton() 方法用于初始化本地用戶信息 , 并在 主窗體左上角顯示本地用戶的頭像和名稱 , 會在用戶更改本地用戶名稱時(shí) 同步更新。 (5) main() 方法 , 本方法 首先獲取用戶設(shè)置的界面外觀 , 然后調(diào)用 UIManager 類設(shè)置指定的外觀 , 生成主窗體對象。最后初始化服務(wù)器端口和系統(tǒng)欄圖標(biāo) 。 以下為關(guān)鍵代碼: public static void main(String args[]) { try { String laf = (lookAndFeel, java默認(rèn) )。//獲取用戶選擇的計(jì)算機(jī)信息工程學(xué)院本科畢業(yè) 13 外觀 if ((當(dāng)前系統(tǒng) )1) (UIManager .getSystemLookAndFeelClassName())。//設(shè)置外觀 EQ frame = new EQ()。 (true)。//顯示窗體 ()。// 初始化系統(tǒng)欄 ()。//啟動(dòng)服務(wù)端口 ()。//檢測系統(tǒng)公告 } catch (Exception e) { ()。 } } 記錄窗體的位置步驟如下: 為窗體添加監(jiān)聽器,當(dāng) 改變 窗體的位置和大小時(shí), 將 調(diào)用 saveLocation()方法將窗體和位置大小保存到數(shù)據(jù)庫中。 saveLocation(),該方法中調(diào)用 了 DAO 類中的 updateLocation 將窗體的位置和大小保存到數(shù)據(jù)庫 中 。 公共模塊的實(shí)現(xiàn)過程 公 共模塊包括數(shù)據(jù)庫操作類和系統(tǒng) 工具類。其中 DAO 類主要負(fù)責(zé)有關(guān)數(shù)據(jù)庫的操作,該類在構(gòu)造方法中驅(qū)動(dòng)并連接數(shù)據(jù)庫,然后將構(gòu)造方法設(shè)置為 private 私有屬性,通過靜態(tài)的 getdao()獲取 DAO 類的實(shí)例對象,這是簡單的單例模式。在連接數(shù)據(jù)庫時(shí),可以指定create 參數(shù)為 true 直接創(chuàng)建數(shù)據(jù)庫,但在此之前需要調(diào)用 dbExist()方法判斷數(shù)據(jù)庫是否存在。 Resource 類是企業(yè)內(nèi)部通信系統(tǒng)中的工具類,該類中的方法都是靜態(tài)的,可以直接 調(diào)用,而不用創(chuàng)建 Resource 類的實(shí)例對象。這些工具方法包括搜索用戶的方法、登錄公共資源的方法、信使群發(fā)的方法和單條信息發(fā)送的方法。 系統(tǒng)工具模塊的實(shí)現(xiàn)過程 ( 1) createSysToolPanel()方法,用于創(chuàng)建系統(tǒng)工具選項(xiàng)卡,在該選項(xiàng)卡中包括界面選擇、用戶搜索和系統(tǒng)操作 3 部分,其中系統(tǒng)操作用于程序更新,它們都被添加到系統(tǒng)工具面板中, createSysToolPanel()方法必須設(shè)置好 面板的布局和初始化工作。 ( 2)在 createSysToolPanel()方法中創(chuàng)建界面選擇部分,該部分以列 表控件顯示了兩種外觀選擇,當(dāng)用戶選擇其中以種外觀并單擊“確定”按鈕之后,選擇外觀會保存到首選項(xiàng)中,然后提示重新運(yùn)行本軟件。 ( 3)在 createSysToolPanel()方法中創(chuàng)建用戶搜索部分,包括搜索列表、搜索進(jìn)度條計(jì)算機(jī)信息工程學(xué)院本科畢業(yè) 14 和“搜索新用戶” 3 個(gè)控件,當(dāng)單擊“搜索新用戶”按鈕時(shí),系統(tǒng)會根據(jù)用戶在系統(tǒng)設(shè)置界面所設(shè)置的 IP 搜索范圍搜索所有計(jì)算機(jī)信息,并創(chuàng)建相應(yīng)的用戶對象 ,然后保存 到數(shù)據(jù)庫中。 ( 4)創(chuàng)建“搜索新用戶”按鈕的事件監(jiān)聽器 SearchUserActionListener 類,調(diào)用Resource 工具類的 searchUsers()方法搜索指定 IP 范圍內(nèi)的所有用戶。系統(tǒng)工具類中的searchUsers()方法,該方法用于搜索局域網(wǎng)內(nèi)的通信用戶,也就是搜索企業(yè)內(nèi)的所有職工。本方法將獲取用戶指定的 IP 范圍,并在該范圍內(nèi)搜索所有可以訪問的計(jì)算機(jī),如果用戶沒有指定 IP 范圍,系統(tǒng)默認(rèn)的是 。該方法的關(guān)鍵代碼如下: try { for (int l = ipsInt[0]。 l = ipeInt[0]。 l++) { boolean b0 = l ipeInt[0]。 // 記錄第一層循環(huán)的條件 int k = l != ipsInt[0] ? 0 : ipsInt[1]。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1