版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、即時通信系統(tǒng)的開發(fā)與設計設 計()本科畢業(yè)設計(論文)即時通信軟件的開發(fā)與設計rrJ摘要攀枝花學院本科畢業(yè)設計(論文)摘要隨著計算機互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,國家對互聯(lián)網(wǎng)的不斷重視,各種各樣的社 交軟件層出不窮,使用通信軟件交流成為了人們生活中必不可少的一部分。即時通 訊工具作為未來跨越互聯(lián)網(wǎng)與移動互聯(lián)網(wǎng)的業(yè)務,其發(fā)展的潛力是十分巨大的,同 時,其商業(yè)模式的發(fā)展將是未來要關(guān)注的焦點。免費與收費相結(jié)合的發(fā)展策略將是 IM的主要發(fā)展模式。本論文實現(xiàn)一個運行于windows平臺的基于局域網(wǎng)的即時聊天系統(tǒng)。該聊天軟 件包括服務器端和客戶端兩個模塊,客戶端向服務器端發(fā)送服務請求服務器端向客 戶端提供相應的服
2、務??蛻舳酥饕獙崿F(xiàn)用戶登錄、注冊、聊天等功能。該軟件采用 多線程技術(shù)、tcp通信技術(shù)、udp通信技術(shù),并在傳輸數(shù)據(jù)時對消息實現(xiàn)序列化和數(shù) 據(jù)的還原。該軟件能實現(xiàn)企業(yè)員工內(nèi)部聊天交流,避免企業(yè)內(nèi)部員工使用類似QQ等軟件泄 露內(nèi)部信息,但是該軟件只實現(xiàn)了登錄、注冊、聊天等基本功能,還有很多不足之 處需要改進。關(guān)鍵字 客戶端,服務器,c/s,即時通信,套接字.ABSTRACT攀枝花學院本科畢業(yè)設計(論文)ABSTRACTWith the continuous development of computer technology, the Internet, the state continues t
3、o pay attention to the Internet, a variety of social software after another, using communication software exchange has become an indispensable part of peoples lives. Instant messaging as the future across the Internet and mobile Internet business, its development potential is enormous while the deve
4、lopment of its business model will be the focus of the future to pay attention. Free and fee development strategy will be a combination of IMfs main development modeLIn this paper, the realization of a run on LANbased instant messaging system windows platform. The chat software includes server and c
5、lient of two modules, the client sends a service request to the server to the client to provide appropriate services to the server. Client main implement user login, registration, chat and other functions. The software uses multi-threading technology, tcp communication technology, udp communications
6、 technology, and in the transmission of data to achieve reduction message serialization and data.The software enables employees chat internal communication and to avoid internal staff use similar software QQ leaked inside information, but the software only to realize the login, registration chat, an
7、d other basic functions, there are many deficiencies need to be Improved.Keywords client, server, c / s, instant messaging, socketsii目錄攀枝花學院本科畢業(yè)設計(論文)目錄摘要IABSTRACTII1前言11課題背景及意義12國內(nèi)現(xiàn)狀及發(fā)展趨勢1.3現(xiàn)行系統(tǒng)的不足2系統(tǒng)開發(fā)關(guān)鍵技術(shù)及開發(fā)環(huán)境2. 1 qt及qtcreator開發(fā)環(huán)境211 qt簡介1. 4解決方案2 1 2 Qt Creator 簡介52. 2 mysql藪據(jù)庫介岔52. 3 socket 套接學
8、介紹62.4 IP62. 5 TCP725 udp協(xié)議簡介727多線程技術(shù)介紹93.系統(tǒng)設計112.6 c/s模式介紹83.1系統(tǒng)分析3. 1. 1功能需求分析31.2性能需求分析31.3數(shù)據(jù)需求分析3. 2系統(tǒng)設計321工作流程32. 2服務器設計32. 3客戶端設計4系統(tǒng)關(guān)鍵技術(shù)實現(xiàn)164. 1服務器實現(xiàn)1642客戶端實現(xiàn)195系統(tǒng)測試33攀枝花學院本科畢業(yè)設計(論文)目錄總結(jié)5.1測試的意義及目的5- 2軟件測試的方法/: IS3333333436參考文獻38致謝39前言攀枝花學院本科畢業(yè)設計(論文)1前言1.1課題背景及意義即時通信(instant messaging)是指網(wǎng)絡上用來進
9、行實時通訊的系統(tǒng)服務,人 們可以使用即時通信軟件以文字、圖片、文檔、語音、視頻的形式通過網(wǎng)絡進行異 地實時信息交流。隨著互聯(lián)網(wǎng)的不斷普及,使用通信軟件交流成為了人們生活中必 不可少的一部分,而且人們對通信軟件的功能需求的不斷增大,即時通信軟件的功 能也日趨完善,除了最基本的通訊功能外,逐漸集成了電子郵件、博客、微博、音 樂、電視、游戲、電子支付和搜索等多種功能,而這些功能的集成也使得即時通信 軟件已經(jīng)不再是一個單純的通信工具,它已經(jīng)成為了集信息交流、娛樂、電子商務、 商務辦公、客戶服務于一身的綜合化信息平臺。即時通信將世界構(gòu)建成了一個整體,實現(xiàn)了信息交流的無國界;無論你身在美國、 還是遙遠的非
10、洲、亦或是我們身處的中國,通過MSN或qq聊天就可以知道你現(xiàn)在正 在干什么,將要干什么;即時通信應用在企業(yè)辦公上,企業(yè)工作效率得到了很大的 提升,群組聊天讓員工之間的技術(shù)探討暢通無阻;視頻會議技術(shù)讓你不再為繁瑣的 會議東奔西走;這極大方便了我們的生活,提高了我們的生活品質(zhì)。因此,即時通 信軟件的設計與開發(fā)具有重要意義。1.2內(nèi)現(xiàn)狀及發(fā)展趨勢國內(nèi)外即時通信系統(tǒng)發(fā)展迅速,特別是近年來即時通信軟件層出不窮,目前人們 熟知的有騰訊QQ、MSN、UC、skype等即時通信軟件;還有最近幾年新起的微信、 易信、米聊等移動端即時通信軟件。據(jù)一項數(shù)據(jù)調(diào)査顯示:2014年二季度末,QQ月 活躍賬戶數(shù)達到& 29
11、億,微信和WeChat (微信海外版)合并月活躍賬戶數(shù)達4. 38 億。在微信月活賬戶持續(xù)增長的同時,QQ智能終端月活躍賬戶突破了 5.21億,同比 增長45%,相比上季度也有6%的增幅。據(jù)相關(guān)統(tǒng)計,目前中國智能手機用戶在5億 左右,這意味著,智能手機用戶幾乎都活躍在手機QQ上。這些數(shù)據(jù)表明移動端的即 時通信軟件現(xiàn)今有很大的市場,逐漸的由互聯(lián)網(wǎng)絡跨入移動互聯(lián)網(wǎng),發(fā)展?jié)摿κ?巨大。而今,隨著人們對生活娛樂的需求不斷增加,即時通信軟件不單單只有信息交流 這一簡單的功能,它還集成了與人生活緊密相關(guān)的一些功能;比如:騰訊手機qq上 的滴滴打車、qq電影票、騰訊新聞、qq錢包等。這些功能讓你體會到生活
12、的便捷與 快樂;讓你足不出戶就可以實現(xiàn)電影票的購買,而且還能幫你理財。前言攀枝花學院本科畢業(yè)設計(論文)即時通訊工具作為未來跨越互聯(lián)網(wǎng)與移動互聯(lián)網(wǎng)的業(yè)務,其發(fā)展的潛力是十分巨 大的,同時,其商業(yè)模式的發(fā)展將是未來要關(guān)注的焦點。免費與收費相結(jié)合的發(fā)展 策略將是IM的主要發(fā)展模式。集成多種與人們生活息息相關(guān)的服務功能是IM的主 要發(fā)展趨勢仁3現(xiàn)行系統(tǒng)的不足隨著電子商務的發(fā)展,支付工具遍地開花,即時通訊的經(jīng)濟價值將進一步增強, 也不可避免地遭遇更大的安全性問題。用戶信息泄露,盜號木馬、網(wǎng)絡詐騙釣魚等 安全性問題屢見不鮮。只要連接到Internet互聯(lián)網(wǎng),用戶賬號和密碼被盜對黑客來說是件很容易的事。
13、即時通信軟件一般要輸入個人賬號和密碼,驗證成功后方可為其提供服務。而目前 的即時通信廠商很少考慮它的認證機制。這給黑客可乘之機,攻擊者通過暴力破解、 木馬欺騙等破解方法竊取密碼后冒充該用戶來査看聊天記錄并與其他用戶進行通 信,以此來竊取重要的信息。目前,大多數(shù)即時通信軟件在通訊吋傳遞的信息或文件僅僅采用了弱加密甚至 不加密的方式,黑客能很容易的利用此缺陷來監(jiān)聽、篡改、竊取用戶的重要數(shù)據(jù),這 種泄密可能給用戶造成不可估量的損失;尤其是對一些商業(yè)機構(gòu)和金融機構(gòu),一旦 泄密,將會構(gòu)成巨大的商業(yè)安全威脅。1.4解決方案為了解決以上所提到的問題,本軟件使用基于C/S模式的架構(gòu)模型,釆用基于 Socket
14、的局域網(wǎng)通信工具的設計與實現(xiàn)方法。并且還采用tcp與udp通信協(xié)議來實 現(xiàn)通信;基于Socket的局域網(wǎng)通信軟件可以為企業(yè)原有的局域網(wǎng)提供一種良好,安 全,快速的通信機制它的實現(xiàn)無需對企業(yè)原有的局域網(wǎng)硬件進行任何改動,具有實 現(xiàn)成本低廉的優(yōu)點。而tcp協(xié)議是一種可靠的面向連接的傳輸協(xié)議,通過序列確認 和包重復機制提供可靠的數(shù)據(jù)流發(fā)送和應用程序的虛擬連接服務。經(jīng)過3次握手建 立連接發(fā)送數(shù)據(jù)。但tcp不是及時的傳輸協(xié)議。而udp協(xié)議的傳輸效率髙,在企業(yè) 局域網(wǎng)穩(wěn)定安全的環(huán)境下實現(xiàn)用戶聊天時用udp協(xié)議就可以很好的彌補tcp協(xié)議的 不足。而在數(shù)據(jù)方面,服務器將用戶個人信息、用戶好友列表信息、客戶端連
15、接信息 存放于數(shù)據(jù)庫中。攀枝花學院本科畢業(yè)設計(論文)前言整個軟件有客戶端和服務器端組成,將所有功能封裝于各式類文件中,后期維 護簡單。攀枝花學院本科畢業(yè)設計(論文)系統(tǒng)開發(fā)關(guān)鍵技術(shù)及開發(fā)環(huán)境2系統(tǒng)開發(fā)關(guān)鍵技術(shù)及開發(fā)環(huán)境2. 及qtcreator開發(fā)環(huán)境2.1.1qt 簡介Qt是一個跨平臺應用程序和UI開發(fā)框架。使用qt只需一次性開發(fā)應用程序, 無需重新編寫源代碼,便可跨不同的桌面和嵌入式操作系統(tǒng)部署這些應用程序。Qt Software的前生為創(chuàng)始于1994年的Trolltech (奇趣科技),Trolltech于2008年 6月被Nokia收購,加速了其跨平臺的開發(fā)戰(zhàn)略??偟膩碚f,相對于老舊
16、的MFC和目前編程行業(yè)通行的VC+工具,Qt以其入門簡 單,跨平臺以及嵌入式等方面有著無可代替的優(yōu)越性,當然MFC的完整性以及內(nèi)容 的豐富性是Qt不及的。但是由于Qt為開源框架,得到了眾多開發(fā)者的支持,因此 qt的普及也在近千萬開發(fā)人員的基礎上,再次的得到發(fā)展。自從諾基亞宣布停止開 發(fā)其和英特爾公司共同推出的Meego系統(tǒng)并大幅度裁員以來,Qt用以移動開發(fā)人員 集聚減少,從而使得曾經(jīng)火熱的Qt減緩了在移動設備上的發(fā)展的步伐,但是正因為 如此,Qt就更加專注于跨平臺。信號和槽是一種高級接口,應用于對象之間的通信,它是QT的核心特性,也是 QT區(qū)別于其它工具包的重要地方。信號和槽是QT自行定義的一
17、種通信機制,它獨立 于標準的C/C+語言。當一個特定事件發(fā)生的時候,一個信號被發(fā)射。Qt的窗口部 件有很多預定義的信號,但是我們總是可以通過繼承來加入我們自己的信號。槽就 是一個可以被調(diào)用處理特定信號的函數(shù)。Qt的窗口部件又很多預定義的槽,但是通 常的習慣是你可以加入自己的槽,這樣你就可以處理你所感興趣的信號。信號和槽的機制是類型安全的:一個信號的簽名必須與它的接收槽的簽名相匹 配。(實際上一個槽的簽名可以比它接收的信號的簽名少,因為它可以忽略額外的簽 名。)因為簽名是一致的,編譯器就可以幫助我們檢測類型不匹配。信號和槽是寬 松地聯(lián)系在一起的:一個發(fā)射信號的類不用知道也不用注意哪個槽要接收這個
18、信號。 Qt的信號和槽的機制可以保證如果你把一個信號和一個槽連接起來,槽會在正確的 時間使用信號的參數(shù)而被調(diào)用。信號和槽可以使用任何數(shù)量、任何類型的參數(shù)。它 們是完全類型安全的,不會再有回調(diào)核心轉(zhuǎn)儲(core dump) Qt Linguist、圖形化的 GDB 調(diào)試前端,集成qmake構(gòu)建工具等。2. 2 mysq I數(shù)據(jù)庫介紹MySQL的概述MySQL是一個小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。在2008 年1月16號被Sun公司收購。目前MySQL被廣泛地應用在Internet上的中小型網(wǎng) 站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多 中
19、小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了 MySQL作為網(wǎng)站數(shù)據(jù)庫。MySQL是使用使用C和C卄編寫,并使用了多種編譯器進行測試,保證源代 碼的可移植性特點;它還支持 AIX、FreeBSDs HP-UX、Linux、Mac OS、Novell Netware、 OpenBSD、OS/2 Wrap Solaris、Windows等多種操作系統(tǒng);它為多種編程語言提供 了 APIo 這些編程語言包括 C、C+、Eiffel、Java、Perl PHP、Python、Ruby 和 Tel等;MySQL還支持多線程,充分利用CPU資源 并且優(yōu)化了 SQL査詢算法,有效地提高査詢速度。它既能夠作為一個單
20、獨的應用程 序應用在客戶端服務器網(wǎng)絡環(huán)境中,也能夠作為一個庫而嵌入到其他的軟件中提供 多語言支持,常見的編碼如中文的GB2312、BIG5,日文的Sh辻tIS等都可以用作 數(shù)據(jù)表名和數(shù)據(jù)列名提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫連接途徑,提供用 于管理、檢査、優(yōu)化數(shù)據(jù)庫操作的管理工具,可以處理擁有上千萬條記錄的大型數(shù) 據(jù)庫。與其他的大型數(shù)據(jù)庫例如Oracle DB2 SQL Server等相比,MySQL自有它的不 足之處,如規(guī)模小、功能有限(MySQL Cluster的功能和效率都相對比較差)等,但 是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業(yè)來說, MySQ
21、L提供的功能已經(jīng)綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大 降低總體擁有成本。目前Internet上流行的網(wǎng)站構(gòu)架方式是LAMP (Linux+Apache+MySQL+PHP),即使用 Linux 作為操作系 統(tǒng),Apache 作為 Web 服務 器,MySQL作為數(shù)據(jù)庫,PHP作為服務器端腳本解釋器。由于這四個軟件都是遵循GPL 的開放源碼軟件,因此使用這種方式不用花一分錢就可以建立起一個穩(wěn)定、免費的 網(wǎng)站系統(tǒng)。攀枝花學院本科畢業(yè)設計(論文)系統(tǒng)開發(fā)關(guān)鍵技術(shù)及開發(fā)環(huán)境2. 3 socket套接字介紹socket套接字,是支持TCP/IP的網(wǎng)絡通信的基本操作單元,可以看做是不同
22、主 機之間的進程進行雙向通信的端點,簡單的說就是通信的兩方的一種約定,用套接 字中的相關(guān)函數(shù)來完成通信過程。Socket套接字包括:流套接字(SOCK_STREAM):流套接字用于提供面向連接、可靠的數(shù)據(jù)傳輸服務。該服務將保證數(shù)據(jù)能夠?qū)崿F(xiàn)無 差錯、無重復發(fā)送,并按順序接收。流套接字之所以能夠?qū)崿F(xiàn)可靠的數(shù)據(jù)服務,原 因在于其使用了傳輸控制協(xié)議,即TCP (The Transmission Control Protocol)協(xié) 議。數(shù)據(jù)報套接字(SOCK_DGRAM):數(shù)據(jù)報套接字提供了一種無連接的服務。該服務并不能保證數(shù)據(jù)傳輸?shù)目煽啃? 數(shù)據(jù)有可能在傳輸過程中丟失或出現(xiàn)數(shù)據(jù)重復,且無法保證順序地
23、接收到數(shù)據(jù)。數(shù) 據(jù)報套接字使用UDP (User Datagram Protocol)協(xié)議進行數(shù)據(jù)的傳輸。由于數(shù)據(jù)報 套接字不能保證數(shù)據(jù)傳輸?shù)目煽啃裕瑢τ谟锌赡艹霈F(xiàn)的數(shù)據(jù)丟失情況,需要在程序 中做相應的處理。原始套接字(SOCK.RAW):原始套接字與標準套接字(標準套接字指的是前面介紹的流套接字和數(shù)據(jù)報套 接字)的區(qū)別在于:原始套接字可以讀寫內(nèi)核沒有處理的IP數(shù)據(jù)包,而流套接字只 能讀取TCP協(xié)議的數(shù)據(jù),數(shù)據(jù)報套接字只能讀取UDF協(xié)議的數(shù)據(jù)。因此,如果要訪 問其他協(xié)議發(fā)送數(shù)據(jù)必須使用原始套接字。2.4 IP網(wǎng)際協(xié)議IP是TCP/IP的心臟,也是網(wǎng)絡層中最重要的協(xié)議。IP層接收由更低層(網(wǎng)絡接
24、口層例如以太網(wǎng)設備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該 數(shù)據(jù)包發(fā)送到更高層一TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數(shù) 據(jù)包傳送到更低層。IP數(shù)據(jù)包是不可靠的,因為IP并沒有做任何事情來確認數(shù)據(jù) 包是按順序發(fā)送的或者沒有被破壞。IP數(shù)據(jù)包中含有發(fā)送它的主機的地址(源地址) 和接收它的主機的地址(目的地址)。高層的TCF和UDP服務在接收數(shù)據(jù)包時,通常假設包中的源地址是有效的。也可 以這樣說,IP地址形成了許多服務的認證基礎,這些服務相信數(shù)據(jù)包是從一個有效 的主機發(fā)送來的。IP確認包含一個選項,叫作IP source routing,可以用來指定攀枝花學院本科畢業(yè)設計(論文)系統(tǒng)開
25、發(fā)關(guān)鍵技術(shù)及開發(fā)環(huán)境一條源地址和目的地址之間的直接路徑。對于一些TCP和UDP的服務來說,使用了 該選項的IP包好像是從路徑上的最后一個系統(tǒng)傳遞過來的,而不是來自于它的真 實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統(tǒng)來進行平常 是被禁止的連接。那么,許多依靠IP源地址做確認的服務將產(chǎn)生問題并且會被非 法入侵。2. 5 TCP如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,那么IP將把它們向上傳送到 TCP層。TCF將包排序并進行錯誤檢査,同時實現(xiàn)虛電路間的連接。TCP數(shù)據(jù)包中包 括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。TCP 將它的信息送到更高層的應用
26、程序,例如Telnet的服務程序和客戶程序。應用程序 輪流將信息送回TCP層,TCP層便將它們向下傳送到IF層,設備驅(qū)動程序和物理介 質(zhì),最后到接收方。面向連接的服務(例如Telnet、FTP rlogin. X Windows和SMTP) 需要高度的可靠性,所以它們使用了 TCP。DNS在某些情況下使用TCP (發(fā)送和接收 域名數(shù)據(jù)庫),但使用UDP傳送有關(guān)單個主機的信息。2. 5 udp協(xié)議簡介UDP協(xié)議是英文UserDatagramProtocol的縮寫,即用戶數(shù)據(jù)報協(xié)議,主要用來 支持那些需要在計算機之間傳輸數(shù)據(jù)的網(wǎng)絡應用。包括網(wǎng)絡視頻會議系統(tǒng)在內(nèi)的眾 多的客戶/服務器模式的網(wǎng)絡應用都
27、需要使用UDP協(xié)議。UDP協(xié)議從問世至今已經(jīng)被 使用了很多年,雖然其最初的光彩己經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天, UDP仍然不失為一項非常實用和可行的網(wǎng)絡傳輸層協(xié)議。與我們所熟知的TCP (傳輸 控制協(xié)議)協(xié)議一樣,UDP協(xié)議直接位于IP (網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù)0SI (開 放系統(tǒng)互連)參考模型,UDP和TCP都屬于傳輸層協(xié)議。UDP是0SI參考模型中一種無連接的傳輸層協(xié)議,它主要用于不要求分組順序到 達的傳輸中,分組傳輸順序的檢査與排序由應用層完成,提供面向事務的簡單不可 靠信息傳送服務。UDP協(xié)議基本上是IP協(xié)議與上層協(xié)議的接口。UDP協(xié)議適用端口 分別運行在同一臺設備上的
28、多個應用程序。UDP提供了無連接通信,且不對傳送數(shù)據(jù) 包進行可靠性保證,適合于一次傳輸少量數(shù)據(jù),UDP傳輸?shù)目煽啃杂蓱脤迂撠?。UDP 報文沒有可靠性保證、順序保證和流量控制字段等,可靠性較差。但是正因為UDP 協(xié)議的控制選項較少,在數(shù)據(jù)傳輸過程中延遲小、數(shù)據(jù)傳輸效率高,適合對可靠性 要求不高的應用程序,或者可以保障可靠性的應用程序,如DNS、TFTP、SNMP等。攀枝花學院本科畢業(yè)設計(論文)系統(tǒng)開發(fā)關(guān)鍵技術(shù)及開發(fā)環(huán)境2. 6 c/s模式介紹C/S結(jié)構(gòu),即大家熟知的客戶機和服務器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它 可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務合理分配到Client端和Server端
29、來實 現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應用軟件系統(tǒng)都是Client/Server形式的 兩層結(jié)構(gòu),由于現(xiàn)在的軟件應用系統(tǒng)正在向分布式的Web應用發(fā)展,Web和 Client/Server應用都可以進行同樣的業(yè)務處理,應用不同的模塊共享邏輯組件; 因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應用系統(tǒng),通過現(xiàn)有應用系統(tǒng) 中的邏輯可以擴展出新的應用系統(tǒng)。這也就是目前應用系統(tǒng)的發(fā)展方向。C/S結(jié)構(gòu)的基本原則是將計算機應用任務分解成多個子任務,由多臺計算機分工 完成,即采用“功能分布”原則。客戶端完成數(shù)據(jù)處理,數(shù)據(jù)表示以及用戶接口功 能;服務器端完成DBMS (數(shù)據(jù)庫管理系統(tǒng))的核心功能。這種客戶
30、請求服務、服務 器提供服務的處理方式是一種新型的計算機應用模式。Client和Server常常分別 處在相距很遠的兩臺計算機上,Client程序的任務是將用戶的要求提交給Server程 序,再將Server程序返回的結(jié)果以特定的形式顯示給用戶;Server程序的任務是 接收客戶程序提出的服務請求,進行相應的處理,再將結(jié)果返回給客戶程序。C/S結(jié)構(gòu)的優(yōu)點是能充分發(fā)揮客戶端PC的處理能力,很多工作可以在客戶端處 理后再提交給服務器。對應的優(yōu)點就是客戶端響應速度快。具體表現(xiàn)在以下兩點:(1)應用服務器運行數(shù)據(jù)負荷較輕。最簡單的C/S體系結(jié)構(gòu)的數(shù)據(jù)庫應用由兩部分 組成,即客戶應用程序和數(shù)據(jù)庫服務器程序
31、。二者可分別稱為前臺程序與后臺程序。 運行數(shù)據(jù)庫服務器程序的機器,也稱為應用服務器。一旦服務器程序被啟動,就隨 時等待響應客戶程序發(fā)來的請求;客戶應用程序運行在用戶自己的電腦上,對應于 數(shù)據(jù)庫服務器,可稱為客戶電腦,當需要對數(shù)據(jù)庫中的數(shù)據(jù)進行任何操作時,客戶 程序就自動地尋找服務器程序,并向其發(fā)出請求,服務器程序根據(jù)預定的規(guī)則作出 應答,送回結(jié)果,應用服務器運行數(shù)據(jù)負荷較輕。(2)數(shù)據(jù)的儲存管理功能較為透明。在數(shù)據(jù)庫應用中,數(shù)據(jù)的儲存管理功能,是由 服務器程序和客戶應用程序分別獨立進行的,并且通常把那些不同的(不管是已知 還是未知的)前臺應用所不能違反的規(guī)則,在服務器程序中集中實現(xiàn),例如訪問者
32、 的權(quán)限,編號可以重復、必須有客戶才能建立定單這樣的規(guī)則。所有這些,對于工 作在前臺程序上的最終用戶,是“透明”的,他們無須過問(通常也無法干涉)背 后的過程,就可以完成自己的一切工作。在客戶服務器架構(gòu)的應用中,前臺程序不 是非常“瘦小”,麻煩的事情都交給了服務器和網(wǎng)絡。在C/S體系下,數(shù)據(jù)庫不能 真正成為公共、專業(yè)化的倉庫,它受到獨立的專門管理。攀枝花學院本科畢業(yè)設計(論文)系統(tǒng)開發(fā)關(guān)鍵技術(shù)及開發(fā)環(huán)境隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動辦公和分布式辦公越來越普及,這需要我們的系統(tǒng) 具有擴展性。這種方式遠程訪問需要專門的技術(shù),同時要對系統(tǒng)進行專門的設計來 處理分布式的數(shù)據(jù)??蛻舳诵枰惭b專用的客戶端軟件
33、。首先涉及到安裝的工作量,其次任何一臺電 腦出問題,如病毒、硬件損壞,都需要進行安裝或維護。特別是有很多分部或?qū)Yu 店的情況,不是工作量的問題,而是路程的問題。還有,系統(tǒng)軟件升級時,每一臺 客戶機需要重新安裝,其維護和升級成本非常高。對客戶端的操作系統(tǒng)一般也會有 限制。可能適應于Win9&但不能用于win2000或Windows XP。或者不適用于微軟 新的操作系統(tǒng)等等,更不用說Linux、Unix等。傳統(tǒng)的c/s體系結(jié)構(gòu)雖然采用的是 開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應用中無論是Client端還是 Server端都還需要特定的軟件支持。由于沒能提供用戶真正期望的開放環(huán)境,C/S
34、 結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)開發(fā)不同版本的軟件,加之產(chǎn)品的更新?lián)Q代十 分快,已經(jīng)很難適應百臺電腦以上局域網(wǎng)用戶同時使用。而且代價高,效率低。C/S架構(gòu)的劣勢還有高昂的維護成本且投資大。首先,采用C/S架構(gòu),要選擇適 當?shù)臄?shù)據(jù)庫平臺來實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的真正“統(tǒng)一”,使分布于兩地的數(shù)據(jù)同步完全 交由數(shù)據(jù)庫系統(tǒng)去管理,但邏輯上兩地的操作者要直接訪問同一個數(shù)據(jù)庫才能有效 實現(xiàn),有這樣一些問題,如果需要建立“實時”的數(shù)據(jù)同步,就必須在兩地間建立 實時的通訊連接,保持兩地的數(shù)據(jù)庫服務器在線運行,網(wǎng)絡管理工作人員既要對服 務器維護管理,又要對客戶端維護和管理,這需要高昂的投資和復雜的技術(shù)支持, 維護成本
35、很高,維護任務量大。其次,傳統(tǒng)的C/S結(jié)構(gòu)的軟件需要針對不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟 件,由于產(chǎn)品的更新?lián)Q代十分快,代價高和低效率己經(jīng)不適應工作需要。在JAVA這 樣的跨平臺語言出現(xiàn)之后,B/S架構(gòu)更是猛烈沖擊C/S,并對其形成威脅和挑戰(zhàn)。2. 7多線程技術(shù)介紹多線程是指從軟件或者硬件上實現(xiàn)多個線程并發(fā)執(zhí)行的技術(shù)。具有多線程能力的 計算機因有硬件支持而能夠在同一時間執(zhí)行多于一個執(zhí)行緒,進而提升整體處理性 能。具有這種能力的系統(tǒng)包括對稱多處理器、多核心處理器以及芯片級多處理器 (Chip-level multithreading)或同時多線程(Simultaneous multithrea
36、ding) 處理器。軟件多線程。即便處理器只能運行一個線程,操作系統(tǒng)也可以通過快速的 在不同線程之間進行切換,由于時間間隔很小,來給用戶造成一種多個線程同時運 行的假象。這樣的程序運行機制被稱為軟件多線程。如微軟的Windows作業(yè)系統(tǒng)和 Linux就是在各個不同的執(zhí)行緒間來回切換,被稱為單人多任務作業(yè)系統(tǒng)。而DOS這攀枝花學院本科畢業(yè)設計(論文)系統(tǒng)開發(fā)關(guān)鍵技術(shù)及開發(fā)環(huán)境類文字接口作業(yè)系統(tǒng)在一個時間只能處理一項工作,被視為單人單工作業(yè)系統(tǒng)。除 此之外,許多系統(tǒng)及處理器也支持硬件多線程技術(shù)。對稱多處理機(SMP)系統(tǒng)具有 多個處理器,所以具有真正的同時執(zhí)行多個線程的能力;CMP技術(shù)通過在一塊芯
37、片上 集成多個核心也具有真正的多線程能力;CMT技術(shù)則稍有不同,有的是依靠硬件執(zhí)行 線程切換來獲得多線程能力,操作系統(tǒng)不再負責線程切換,因而這部分開銷可以減 少甚至消除,這方面典型的例子是Sun的UltraSPARCTl,它同時綜合了 CMP和CMT。 微軟的Windows 2000以后的操作系統(tǒng)皆支持多線程與超線程技術(shù)。系統(tǒng)設計攀枝花學院本科畢業(yè)設計(論文)3. 系統(tǒng)設計3.1系統(tǒng)分析3.1.1功能需求分析即時通信系統(tǒng)是基于c/s模型的網(wǎng)絡通信軟件,分為客戶端和服務器端兩個部 分??蛻舳艘揽糠掌鳙@取所需的網(wǎng)絡資源,服務器為客戶端提供必需的網(wǎng)絡資源。服務器端包含數(shù)據(jù)庫模塊和消息處理兩個模塊;
38、數(shù)據(jù)庫模塊用于存儲用戶個人 信息、用戶好友列表、和用戶連接信息;消息處理模塊包含査看好友資料、注冊處 理、登錄處理、聊天處理、修改個人信息、添加好友、刪除好友。具體功能結(jié)構(gòu)圖如圖3.1圖3. 1服務器功能模塊圖客戶端包含登錄和注冊兩個部分;登錄模塊包括用戶信息修改、好友管理、消 息功能三個模塊。用戶信息修改模塊:實現(xiàn)修改個人信息。好友管理模塊:實現(xiàn)好友的分組顯示、添加好友、刪除好友、査看好友資料。消息功能模塊:實現(xiàn)發(fā)送消息、接收消息、聊天記錄。客戶端功能模塊結(jié)構(gòu)如圖3.2系統(tǒng)設計攀枝花學院本科畢業(yè)設計(論文)用戶佬想嬉改婦立管理涓息功幣圖32客戶端功能模塊圖3.1.2性能需求分析即時性用戶之間
39、通信時彼此的聊天信息能即時的傳送給對方。服務器的消息記錄能即 時的更新。系統(tǒng)友好性登錄界面、聊天窗口、好友信息資料界面、好友在線狀態(tài)界面要美觀簡潔,友 好大方,操作簡單合理恰當。安全性用戶需要服務器提供相關(guān)服務時需通過服務器的身份驗證來獲取相關(guān)服務。以 此來提高系統(tǒng)的安全性。可擴展性可以很容易擴展系統(tǒng)功能和系統(tǒng)功能的更新。系統(tǒng)設計攀枝花學院本科畢業(yè)設計(論文)3.1.3數(shù)據(jù)需求分析本系統(tǒng)服務器端需要用到MySQL數(shù)據(jù)庫;以此來存放用戶的個人信息、用戶好 友列表、客戶端與服務器通信的登錄信息及網(wǎng)絡連接信息。相關(guān)數(shù)據(jù)庫表如下;用戶信息表user info:名稱字段類型長度說明賬戶useridvar
40、char24Primary key , not null密碼UserpwdVarchar24Not null昵稱userNickvarchar24Not null姓名userNamevarchar24Not null性別userSexvarchar24Not null年齡userAgeint12Not null個人簽名iDiographvarchar48所在地cityvarchar24聯(lián)系方式phonenumbervarchar24在線狀態(tài)statusint12Other10ther2Other3網(wǎng)絡連接表connect info:名稱字段類型長度說明賬戶(id)useridvarchar24
41、Primary key, not nullIp地址ipAddressvarchar24Not null端口Portint12Not null用戶登錄表friendtable:名稱字段類型長度說明x攀枝花學院本科畢業(yè)設計(論文)系統(tǒng)設計當前賬戶useridvarchar24Primary key, Not null賬號friendidvarchar24not null備注remarkvarchar24好友類型friendkindint12好友總數(shù)friendtotalint12昵稱nicknamevarchar24好友狀態(tài)statusint123. 2系統(tǒng)設計3. 2.1工作流程本系統(tǒng)由服務器先
42、啟動。然后客戶端通過己經(jīng)注冊的賬號和密碼來登錄服務器, 登錄成功后客戶端從服務器獲取用戶信息和好友列表,客戶端向服務器發(fā)送相應的 請求可以實現(xiàn)對用戶的信息修改、好友的添加、刪除、査看好友的資料、聊天等一 系列操作。聊天時客戶端向服務器請求好友的連接信息,客戶端得到好友的連接信 息后再利用此鏈接信息將聊天信息發(fā)送給好友.3. 2. 2服務器設計登錄驗證:服務器接收客戶端發(fā)來的賬戶和密碼,創(chuàng)建一個通信線程來接收客 戶端的請求。在線程中實行數(shù)據(jù)庫中的用戶信息賬戶和密碼的比對,判斷登錄認證 通過與否及用戶是否在線;認證通過后將用戶的好友列表及用戶的個人信息返回給 客戶端之后才能實現(xiàn)正常在線、好友聊天、
43、添加好友、刪除好友、修改個人信息等 操作??蛻舳诉B接信息存儲:客戶端登陸成功后將客戶端的賬號、ip地址以及端口號 存入數(shù)據(jù)庫中的客戶端的連接信息表中,并將數(shù)據(jù)庫用戶信息表的中的用戶狀態(tài)置 為1;當客戶端退出登錄時將客戶端的賬號、ip地址及端口號從數(shù)據(jù)庫中的連接信 息表中刪除,并將數(shù)據(jù)庫中用戶信息表中的用戶狀態(tài)置為0。用戶注冊:客戶端發(fā)來注冊請求時,服務器將用戶的注冊信息存入數(shù)據(jù)庫的用 戶信息表中,并通知用戶注冊成功與否。添加好友:服務器收到添加好友請求后將好友存入數(shù)據(jù)庫中的好友列表。 刪除好友:服務器收到刪除好友請求后將好友從數(shù)據(jù)庫中的好友列表刪除。査看好友信息:服務器收到査看好友信息請求時,
44、從數(shù)據(jù)庫中的用戶信息表中 査詢好友信息,再將査詢的信息發(fā)送到對應的用戶。修改用戶信息:服務器收到用戶信息修改請求時將相應的數(shù)據(jù)庫中的用戶信息系統(tǒng)設計攀枝花學院本科畢業(yè)設計(論文)表更新。好友聊天:服務器收到聊天請求時在數(shù)據(jù)中査詢好友的連接信息并將好友的ip 地址及端口號返回給用戶。3. 2. 3客戶端設計用戶登錄:從客戶端輸入登錄信息判斷賬號密碼不為空時才向服務器發(fā)送登錄 請求。用戶注冊:客戶端在注冊界面填寫用戶注冊信息后在把填寫的信息發(fā)送給服務 器。注冊成功后在登錄界面輸入賬號和密碼就可以登錄。用戶信息修改:客戶端點擊修改個人信息按鈕,出現(xiàn)填寫個人信息資料的窗體, 將要修改的個人信息填寫到窗
45、體的列表中,再將修改的個人信息發(fā)送到數(shù)據(jù)庫中。好友分組:客戶端登錄服務器驗證通過后,客戶端收到來自服務器的好友列表 信息,客戶端對好友進行分組顯示及好友狀態(tài)顯示。雙擊分組可以展開或收攏分組。添加好友:用戶在主界面點擊添加好友按鈕出現(xiàn)添加好友的界面。在該界面中 填寫好友的賬號即可實現(xiàn)好友的添加。刪除好友:用戶在好友列表的好友信息一欄上點擊右鍵即可實現(xiàn)好友的的刪除。査看好友資料:用戶在好友列表的好友信息一欄上點擊右鍵,選擇查看資料就 可以發(fā)送査看好友資料的請求。并將服務器發(fā)來的好友資料信息以列表的形式加入 窗體顯示。聊天:用戶在好友列表的好友信息一欄上點擊右鍵,如果好友在線選擇聊天客 戶端就會發(fā)送
46、請求獲取好友的ip地址和端口號。服務器收到請求后就發(fā)送連接信息 給相應的客戶端,客戶端利用此連接信息與好友實現(xiàn)通信聊天。聊天時有聊天窗體, 聊天窗體包括與好友聊天的聊天記錄顯示,用戶發(fā)送聊天信息的發(fā)送編輯區(qū)域及與 哪個好友聊天的標題。系統(tǒng)關(guān)鍵技術(shù)實現(xiàn)攀枝花學院本科畢業(yè)設計(論文)4系統(tǒng)關(guān)鍵技術(shù)實現(xiàn)4.1服務器實現(xiàn)服務器主要有myServer類、myThread類和MainWindow類;其中Ma inWindow類 主要實現(xiàn)服務器窗口顯示、開啟、關(guān)閉。myServer類主要實現(xiàn)通信線程的創(chuàng)建、刪 除。myThread類主要實現(xiàn)通信的處理,即從客戶端接收請求消息、數(shù)據(jù)庫處理、向 客戶端發(fā)送消息。
47、服務器連接數(shù)據(jù)庫關(guān)鍵代碼:int main(int argc, char *argv)QApplication a(zirgc, argv);db=QSqlDatabase:addDatabaseCQMYSQL);db. setHostNameClocalhost);db. setUserName(root);db. setPassword(root);db. setDdt abas eName (db_use:r);bool ok=db. open ();qDebug ()db. driver ();qDebug () db userName ();if (ok)qDebug0open da
48、tabase success;elseqDebug()error open database becausedb. lastError().text();MainWindow w;w. show();return eu exec ();系統(tǒng)關(guān)鍵技術(shù)實現(xiàn)攀枝花學院本科畢業(yè)設計(論文)當服務器啟動時創(chuàng)建服務器啟動界面,點擊啟動服務器進入監(jiān)聽狀態(tài),界面顯 示服務器的ip地址和端口號。其關(guān)鍵代碼如下:void MainWindow: :openServer ()if(!server-listen(QHostAddress:LocalHost,9901)QMessageBox: critical (th
49、is, tr (多線程服務器),tr(無法啟動:1.) arg(server-errorString();close ();return;elseui-serverStatuslabel-setText(tr(* 服務器運行在端 口: %L n) arg(server-serverPort ();ui-displayEdit-setText(server-serverAddress (). toString ();如圖4. 1所示:圖4. 1服務器端當服務器接收連接請求時通過套接字描述符創(chuàng)建一個單獨的通信線程,當客戶 端失去連接時刪除該通信線程。其關(guān)鍵代碼如下:void myServer ::
50、 incomingConnection(int socketDescriptor)系統(tǒng)關(guān)鍵技術(shù)實現(xiàn)攀枝花學院本科畢業(yè)設計(論文)mythread=new myThread (socketDescriptor, 0);connect (mythread, SIGNAL (c 1 ientDisconnectSignal (QString), mythread, SLOT (d eleteLater();connect(mythread, SIGNAL(sendchatFinishSignal(), this SLOT(updateChatMsgS lot ();connect (mythread, SIGNAL (receiveChat (M
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- QCC活動成果報告編寫的技巧(5篇)
- 網(wǎng)絡環(huán)境下音像版權(quán)管理-洞察分析
- 小說著作與讀者互動-洞察分析
- 藥物遞送系統(tǒng)生物降解性-洞察分析
- 胎兒染色體異常診斷-洞察分析
- 細胞運輸與細胞周期調(diào)控-洞察分析
- 土地整治與農(nóng)業(yè)發(fā)展-洞察分析
- 新型吸聲材料研發(fā)-洞察分析
- 營銷創(chuàng)新路徑探索-洞察分析
- 醫(yī)院科室調(diào)整申請書范文(7篇)
- 鄉(xiāng)村振興產(chǎn)業(yè)基金規(guī)劃方案
- 2024年貴州云上產(chǎn)業(yè)服務有限公司招聘筆試參考題庫附帶答案詳解
- 高空作業(yè)吊裝監(jiān)理實施細則
- 天津外資行業(yè)分析
- 心肺復蘇患者體溫管理
- 光伏運維合同
- 急停開關(guān)使用培訓課件
- 國家開放大學電大本科《水利水電工程建筑物》2024-2025期末試題及答案(試卷號:1175)
- 收購公司股份計劃書模板
- 蘇州市2023-2024學年高一上學期期末考試數(shù)學試題(原卷版)
- 涉密內(nèi)網(wǎng)分級保護設計方案
評論
0/150
提交評論