【正文】
院 系 : 計(jì)算機(jī)科學(xué)系 專 業(yè) : 計(jì)算機(jī)科學(xué)與技術(shù) 姓 名 : 余 兆 寬 學(xué) 號(hào) : 081105401007 指導(dǎo)教師 : 謝 怡 雯 教師職稱 : 填寫日期: 2021 年 5 月 1 日 貴陽(yáng)學(xué)院畢業(yè)論文(設(shè)計(jì)) 1 摘 要 在網(wǎng)絡(luò)越來(lái)越發(fā)達(dá)的今天,人們對(duì)網(wǎng)絡(luò)的依賴越來(lái)越多,越來(lái)越離不開網(wǎng)絡(luò),由此而產(chǎn)生的聊天工具越來(lái)越多,例如,國(guó)外的 ICQ、國(guó)內(nèi)騰訊公司開發(fā)的 OICQ。使用 JAVA 語(yǔ)言編寫,開發(fā)工 具采用 Eclipse。 聊天系統(tǒng)完成后將可進(jìn)行多人對(duì)多人的聊天,對(duì)好友進(jìn)行添加、刪除,對(duì)新用戶的注冊(cè),發(fā)送消息、接受消息等等功能 關(guān)鍵詞 : 多線程 ; JAVA ; Socket ; TCP/IP 貴陽(yáng)學(xué)院畢業(yè)論文(設(shè)計(jì)) 2 Abstract as the work bee more and more developed, people bee more and more lean to the work, and can not leave with out it. This caused the chat materials bee more numerous, as the overseas ICQ system, the OICQ system that invented by Tencent Co., and so on. So we create a work chat medium just like the . Java work programming based on the power, the use of Java designed to prepare graduates a chat system. In general, the majority of the chat tool for client and server program in addition to serverside storage of customer data for the database, the system uses a client / server architecture model the adoption of Java provided Socket class connect client and server and between the client and server municate with each other, as the chat is to provide pointtomultipoint and multithreaded Java function to be pleted by using multithreaded chat and more pointtomultipoint, database management system with SQL Server2021 the pletion and adoption of JDBCODBC Bridge access the database. The system built on the JAVA platform, the system design using objectoriented technology and objectoriented design principles. System uses the C / S structure, client and clientside and serverside client and send messages through Socket. The use of JAVA language, development tools using Eclipse. Design and Implementation of serverside process, the use of multithreading technology, which can process in a single run at the same time a number of different threads, the implementation of different tasks. Procedures greatly enhanced the use of server resources. Chat system will allow people to plete chat to more friends, and the system can add, delete somebody, can deal with new user registration, send messages, receive messages and so on. Keywords : Multithreading 。雖然目前的聊天軟件已經(jīng)具備強(qiáng)大多種的功能,并且支持廣域網(wǎng)的聊天,但是他們?nèi)匀淮嬖诟鞣N各樣的問(wèn)題,如安全問(wèn)題。 即時(shí)聊天軟件 最早的創(chuàng)始人是三個(gè)以色列青年,是他們?cè)?1996 年做出來(lái)的,取名叫ICQ。 的前身 OICQ 在 1999 年 2 月第一次推出,目前幾乎接近壟斷中國(guó)在線即時(shí)通訊軟件市場(chǎng)。 2021 年 6 月,中國(guó)移動(dòng)已經(jīng)推出了自己的即時(shí)通信工具 ——Fetion,中國(guó)聯(lián)通也將推出即時(shí)通訊工具 “超信 ”,但由于進(jìn)入市場(chǎng)較晚 ,其用戶規(guī)模和品牌知名度還比不上原有的即時(shí)通信服務(wù)提供商。起初他用具有面向?qū)ο筇卣鞯?C++語(yǔ)言編寫嵌入式軟件,可以放在面包機(jī)或 PDA( Personal Digital Assistant,個(gè)人數(shù)字主力)等小型電子消費(fèi)這杯里,以使設(shè)備變得更為 “ 聰明 ” ,更具備人工只能。這造成程序員編程的極大負(fù)擔(dān),并可能產(chǎn)生多個(gè) Bugs。 Oak 是一種可移置的語(yǔ)言,它是一種平臺(tái)獨(dú)立的語(yǔ)言,能夠在各種芯片上執(zhí)行,可以降低設(shè) 備的研發(fā)成本。在 Java 之前雖然已經(jīng)有面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言問(wèn)問(wèn)世,但有些如 C++并不是完全的面向?qū)ο螅敲嫦蜻^(guò)程和面向?qū)ο蟮幕旌象w 。 Java 提供了許多安全機(jī)制來(lái)保證其適用上的安全性。 5. 多線程 Java 具備內(nèi)建的多線程功能,可以將一個(gè)程序的不同程序段設(shè)置為 不同的線程,使各線程并發(fā)、獨(dú)立執(zhí)行,提高系統(tǒng)的運(yùn)行效率。 三、 Java 與 Inter Java 語(yǔ)言取得成功的領(lǐng)域之一就是網(wǎng)絡(luò) , (其他語(yǔ)言 )數(shù)頁(yè)代碼 (Java)一條語(yǔ)句 TCP/IP(傳輸控制協(xié)議 /網(wǎng) 間協(xié)議 )是 inter 的主要協(xié)議 ,定義了計(jì)算機(jī)和外設(shè)進(jìn)行通信所使用的規(guī)則 (應(yīng)用層 ,傳輸層 ,網(wǎng)絡(luò)層 ,鏈路層 ), 大多數(shù)基于 inter 的應(yīng)用程序被看作 TCP/IP 協(xié)議的上一層 , 如 : ftp、 、 smtp、 pop tel、 nntp 等 。 URL 是三大功 能中最高級(jí)的一種 ,通過(guò) URL Java 程序可以直接送出或讀入網(wǎng)絡(luò)上的數(shù)據(jù) . Socket 是傳統(tǒng)網(wǎng)絡(luò)程序最常用的方式 ,可以想象為兩個(gè)不同的程序通過(guò)網(wǎng)絡(luò)的通信信道 . Datagram 是更低級(jí)的網(wǎng)絡(luò)傳輸方式 ,它把數(shù)據(jù)的目的紀(jì)錄在數(shù)據(jù)包中 ,然后直接放在網(wǎng)絡(luò)上 貴陽(yáng)學(xué)院畢業(yè)論文(設(shè)計(jì)) 8 第三節(jié) Socket 編程 一 、關(guān)于 TCP/IP 協(xié)議 TCP 協(xié)議是網(wǎng)絡(luò)通信的基石,對(duì)此, Java 專門提供了 Socket 的類庫(kù),在其中抽象出TCP 協(xié)議通信的常用方法: TCP 協(xié)議與三次握手: 在講述 TCP 協(xié)議流程前,先來(lái)聲明兩個(gè)重要的概念: ( 1)客戶端 , 首先發(fā)送 TCP 請(qǐng)求的是客戶端,客戶端一般是服務(wù)(比如數(shù)據(jù)查詢服務(wù))的請(qǐng)求者。如果服務(wù)器收到 SYN 標(biāo)記,它將發(fā)回一個(gè)“ SYN+ACK”數(shù)據(jù)包。 主機(jī) A 主機(jī) B 圖 三次握手協(xié)議 由此可見,通過(guò)客戶端和服務(wù)器的“三次握手”,雙方可以建立暢通的通信信道,在此信道上雙方互相傳輸數(shù)據(jù)。它們之間的區(qū)別只有在客戶機(jī)試圖同服務(wù)器連接的時(shí)候才顯得非常明顯。一旦連接建好,那么無(wú)論在服務(wù)器端還是客戶機(jī)端,連接只是魔術(shù)般地變成了一個(gè) IO 數(shù)據(jù)流對(duì)象。 圖 服務(wù)器和客戶機(jī)的連接 第四節(jié) 多線程編程 多線程編成是網(wǎng)絡(luò)編成的基礎(chǔ),幾乎所有的網(wǎng)絡(luò)編程都將涉及到多個(gè)線程的數(shù)據(jù)傳輸,并且還要實(shí)現(xiàn)界面和數(shù)據(jù)處理互不影響。但實(shí)際上在單 CPU 的機(jī)子上,這些程序并不是同時(shí)在運(yùn)行(即便是在多 CPU 的電腦上 ,也不可能所有程序同時(shí)運(yùn)行),所有的程序都以某種調(diào)度算法,按照優(yōu)先級(jí),依次獲取 CPU 時(shí)間,每當(dāng)一個(gè)程序獲得 CPU 時(shí)間后,它就會(huì)得到運(yùn)行,而當(dāng)運(yùn)行一段時(shí)間后,操作系統(tǒng)會(huì)將其暫停,再接換新的線程來(lái)運(yùn)行。 在 windows 系統(tǒng)中,進(jìn)程和線程是最為重要的兩個(gè)概念,因?yàn)檎麄€(gè)系統(tǒng)就是基于進(jìn)程和線程的。 二 、 技術(shù)可行性 本系統(tǒng)的開發(fā)利用 Microsoft SQL Server2021 作為本系統(tǒng)的數(shù)據(jù)庫(kù) ,它是一個(gè)支持多用戶的新型數(shù)據(jù)庫(kù) ,適用于大中規(guī)模的數(shù)據(jù)量需求。 綜上所述 ,本系統(tǒng)的設(shè)計(jì)與開發(fā)在技術(shù)上和硬件設(shè)備上的條件都是滿足的 ,因此 ,它在技術(shù)上是可行的。 。使系統(tǒng)能夠無(wú) 論在功能設(shè)計(jì)上,還是在技術(shù)實(shí)現(xiàn)上,都處于同行業(yè)的領(lǐng)先地位。 貴陽(yáng)學(xué)院畢業(yè)論文(設(shè)計(jì)) 13 六 、 代碼可讀性好 文中的代碼將盡可能簡(jiǎn)潔,易懂。 圖 系統(tǒng)實(shí)現(xiàn)原理 貴陽(yáng)學(xué)院畢業(yè)論文(設(shè)計(jì)) 19 第二節(jié) 系 統(tǒng)實(shí)現(xiàn)層次圖 圖 系統(tǒng)實(shí)現(xiàn)層次圖 第三節(jié) 各模塊詳細(xì)功能 一、服務(wù)器端結(jié)構(gòu) 圖 服務(wù)器端結(jié)構(gòu)圖 局域網(wǎng)聊天系統(tǒng) 客 戶 端 服 務(wù) 器 端 多人聊天 好 好好友私聊 用戶注冊(cè) 登錄 不設(shè)置聊天風(fēng)格 服務(wù)器監(jiān)控聊天類容 服務(wù)器發(fā)送通知 保保存用戶聊天信息 保保存服務(wù)器日志 服務(wù)器監(jiān)聽控制窗體 啟動(dòng)服務(wù)器監(jiān)聽 處理所有用戶請(qǐng)求 Serve_view ServerStart ServerModel 貴陽(yáng)學(xué)院畢業(yè)論文(設(shè)計(jì)) 20 為服務(wù)器端程序界面,負(fù)責(zé)為服務(wù)器的啟動(dòng)提供界面服務(wù)。 二、客戶端結(jié)構(gòu) 圖 客戶端結(jié)構(gòu)圖 為客戶端程序啟動(dòng)類,負(fù)責(zé)客戶端的啟動(dòng)和退出。 用戶注冊(cè)窗體 用戶窗體監(jiān)聽 用戶登錄窗體 用戶聊天窗體 啟動(dòng)客服端 RegistView _Listener Listener _Client _Window Chat 貴陽(yáng)學(xué)院畢業(yè)論文(設(shè)計(jì)) 21 第 四 章 詳細(xì)設(shè)計(jì) 與實(shí)現(xiàn) 第一節(jié) 系統(tǒng)流程圖 一、系統(tǒng)總體流程圖 開 始啟 動(dòng) 服 務(wù) 器判 斷 啟 動(dòng) 信 息啟 動(dòng) 客 戶 端判 斷 登 錄 信 息登 錄 聊 天 室退 出 聊 天 室結(jié) 束是是注 冊(cè) 用 戶退 出 服 務(wù) 器否是否 圖 系統(tǒng)總體流程圖 貴陽(yáng)學(xué)院畢業(yè)論文(設(shè)計(jì)) 22 二、系統(tǒng)客戶端流程圖 圖 客戶端流程圖 客服端登錄界面 聊天室界面 清 屏 聊天類容 保 存 退 出 聊天對(duì)象 字體顏色 表 情 開 始 結(jié) 束 貴陽(yáng)學(xué)院畢業(yè)論文(設(shè)計(jì)) 23 第二節(jié) 編寫服務(wù)器端程序 一、問(wèn)題陳述 1. 接受用戶注冊(cè)信息并保存在一個(gè)基于文件的對(duì)象型數(shù)據(jù)庫(kù)。 6. 發(fā)送通知。 ( 2) tb_friend 表 貴陽(yáng)學(xué)院畢業(yè)論文(設(shè)計(jì)) 24 (3)tb_group 表 聊