邵陽學(xué)院信息工程系 楊 晟 陽 泳 余建坤
?
基于linux的可視化聊天工具設(shè)計與實現(xiàn)
邵陽學(xué)院信息工程系楊晟陽泳余建坤
【摘要】隨著計算機普及與發(fā)展,互聯(lián)網(wǎng)技術(shù)、網(wǎng)絡(luò)應(yīng)用工具也在不斷的升級與更新,現(xiàn)在人們的生活、工作已經(jīng)和互聯(lián)網(wǎng)緊密的聯(lián)系在一起。局域網(wǎng)用于企業(yè)、學(xué)校內(nèi)部之間的信息發(fā)布、通信、數(shù)據(jù)共享等,我們常用的騰訊QQ、微信、微博等都是適合Internet工具,而局域網(wǎng)內(nèi)交流工具-飛Q,隨著近幾年局域網(wǎng)的應(yīng)用市場不斷增大,加強對局域網(wǎng)通信工具的研究具備一定的發(fā)展前景。本文針對局域網(wǎng)通信工具的研究與實現(xiàn)技術(shù)進行深入分析,主要Qt create工具設(shè)計一款簡單的局域網(wǎng)通信工具為主要案例進行詳細的論述,分析局域網(wǎng)通信軟件的需求分析、通信系統(tǒng)設(shè)計過程分析以及不同平臺的跨平臺測試,深入分析局域網(wǎng)聊天工具的設(shè)計與實現(xiàn)。
【關(guān)鍵詞】Linux系統(tǒng);Qt create;局域網(wǎng);linux網(wǎng)絡(luò)編程
隨著計算機網(wǎng)絡(luò)推廣與發(fā)展,人們通過網(wǎng)絡(luò)進行交流顯得越來越重要,與之對應(yīng)是誕生了一系列的通信軟件,例如現(xiàn)狀的QQ、微信、微博等等工具,但是這些軟件主要是針對Windows系統(tǒng)開發(fā),而linux中的網(wǎng)絡(luò)聊天工具相對較少。Linux是unix操作系統(tǒng)的克隆,系統(tǒng)代碼開源,遵循GPL聲明,用戶可以根據(jù)自己的開發(fā)需求對linux進行裁剪,是一個自由的操作系統(tǒng),深受廣大IT技術(shù)人員的喜愛,與Windows、Mac等操作系統(tǒng)存在的本質(zhì)的區(qū)別。Linux系統(tǒng)可以根據(jù)用戶需求進行系統(tǒng)定制,其中包括多任務(wù)、虛擬內(nèi)存、TCP/IP驅(qū)動程序,共享庫和多用戶支持等,所以本文軟件平臺采用linux系統(tǒng)平臺,利用現(xiàn)有的網(wǎng)絡(luò)編程知識,設(shè)計和開發(fā)局域網(wǎng)里基于Linux的局域網(wǎng)通信工具。
通過對騰訊QQ、微信等通信工具分析,作為一款系統(tǒng)聊天工具的需要具備以下幾點:
(1)實用性:通信工具的最重要的就是信息傳輸、交流,而不是增加一系列的其他次要功能。
(2)可靠性:用戶的信息、聊天的內(nèi)容都是需要做好保密,所以保證傳輸穩(wěn)定性、安全新。
(3)簡便性:通信的工具的使用人群不是專業(yè)技術(shù)員,所以工具操作要簡便。
(4)可擴展性:采用開放的標(biāo)準(zhǔn)和接口,便于系統(tǒng)的規(guī)模、功能擴展。
通過上述四點的目標(biāo)分析,讓我們了解系統(tǒng)設(shè)計的基本要求,為此我對此工具的聊天功能有以下的初步設(shè)計架構(gòu):
(1)功能:用戶向?qū)υ捒騼?nèi)輸入自己的信息內(nèi)容,點擊發(fā)送按鈕,后臺程序?qū)⒂脩粜畔?nèi)容發(fā)送給指定用戶。
(2)輸入:輸入需要發(fā)送的消息內(nèi)容。
(3)中間處理:用戶在對話框輸入自己的需要發(fā)出的信息,點擊發(fā)送之后,程序?qū)⒂脩粜畔⒋虬蓴?shù)據(jù)包,通過TCP/IP協(xié)議發(fā)送到指定的IP地址中。而對方用戶在線接收消息之后,在己方的消息框內(nèi),發(fā)出的消息便成為了歷史消息,記錄在消息記錄中,消息記錄方式為:“時間+用戶名+內(nèi)容****”。
(4)輸出:在對話框的左側(cè)存在歷史記錄選項,點擊可以查詢信息記錄。上述為用戶在線聊天的基本處理流程,聊天內(nèi)容僅限于文字,而圖片與語言需要進行額外的擴展,在此并不實現(xiàn)。
而針對工具的文件傳輸功能,與語言功能實現(xiàn)類似,但是在傳輸?shù)奈募枰獙⑽募鶕?jù)TCP/IP協(xié)議將文件轉(zhuǎn)換成為數(shù)據(jù)流包,而對方用戶接受之后,在進行相應(yīng)的數(shù)據(jù)流包還原。
(1)功能:用戶的打開對話框,點擊發(fā)送文件選項,選擇相應(yīng)的文件,進行傳輸。
(2)輸入:選擇需要傳輸?shù)奈募?/p>
(3)中間處理:單擊發(fā)送文件按鈕,選擇需要傳輸?shù)奈募?,根?jù)TCP/IP協(xié)議將傳輸?shù)奈募D(zhuǎn)換成數(shù)據(jù)流包,并在對方對話框內(nèi)彈出”是否接受文件選擇框”,用戶可以選擇接收或者不接收,用戶接收后,數(shù)據(jù)流包又轉(zhuǎn)換成為文件包,保存著用戶存放的目錄下。
(4)輸出:接收端接收文件并保存。
(5)上述為文件傳輸?shù)幕咎幚砹鞒蹋軌騻鬏斔枰奈募?/p>
用戶通過自身的賬號(IP地址)登錄軟件,軟件登錄之后自動檢索局域網(wǎng)內(nèi)已經(jīng)上線的用戶(IP地址),用戶可以點擊相應(yīng)的用戶對話框,在發(fā)送欄內(nèi)輸入相應(yīng)的信息,或者選擇相應(yīng)的文件傳輸,而對方用戶的對話框內(nèi)會提示消息或者需要接收的文件。
通過使用Qt creator編輯工具的界面,使用網(wǎng)絡(luò)套接字socket完成用戶之間的信息傳遞。由于此工具為linux平臺工具,網(wǎng)絡(luò)為局域網(wǎng)聊天系統(tǒng),因此取消了服務(wù)器端,軟件通過自動檢測局域網(wǎng)內(nèi)的IP地址來查詢用戶機是否在線,用戶可以和在線用戶進行信息交流。例如用戶登錄軟件之后,系統(tǒng)將會自動處理用戶1IP地址使用的消息,并且其他的IP地址發(fā)送數(shù)據(jù)包,而其他用戶接受用戶1發(fā)送的數(shù)據(jù)包,客戶端列表刷新,顯示用戶1已經(jīng)上線。
通過上述系統(tǒng)的處理需要注意以下幾點:
(1)數(shù)據(jù)包的管理:該模塊中管理用戶的IP地址,主機名等信息,用戶使用登錄客戶端之后,需要向其他在線用戶發(fā)送數(shù)據(jù)包,使得其他用戶的列表中顯示用戶在線。
(2)邏輯通信:邏輯通信模塊是整個系統(tǒng)的核心,該模塊主要包含廣播登陸信息,發(fā)送接收數(shù)據(jù),實現(xiàn)上下線及文本聊天的邏輯處理,用于用戶之間的信息傳遞工具,需要處理好,否則將會影響整個系統(tǒng)的信息交流問題。
(3)文件傳輸:文件傳輸是采用tcp協(xié)議完成,其實現(xiàn)相對比較獨立,在聊天窗口中調(diào)用其接口就可以實現(xiàn)該功能。
(4)界面設(shè)計:通過Qtdesign設(shè)計系統(tǒng)的界面,實現(xiàn)用戶之間的聊天工具以及文件傳輸交流,在聊天窗口包含了輸入框、顯示框、文件傳輸按鈕,加粗按鈕、傾斜按鈕、下劃線按鈕、選擇顏色按鈕等等,此外還有兩個combox控件,用于選擇字體和文字大小,其中單擊文件傳輸按鈕和選擇顏色按鈕都會彈出相應(yīng)的對話框。而about按鈕,記錄了軟件相關(guān)信息,相對于QQ的聊天界面而言,簡便很多。
針對該系統(tǒng)是基于Linux平臺的開發(fā),因此選用了QT作為開發(fā)工具,C++作為開發(fā)語言,當(dāng)軟件在linux中進行測試,可得基本功能已經(jīng)實現(xiàn)。
綜上所述,通過本次的基于linux的聊天工具設(shè)計,對于目前已所學(xué)習(xí)的東西進行應(yīng)用一番,發(fā)現(xiàn)自身中的不足,需要進行再次深入的加強學(xué)習(xí)。而對于此聊天工具,已經(jīng)能夠初步實現(xiàn)局域網(wǎng)絡(luò)中的用戶聊天與文件傳輸,此外還可以進行功能擴展,例如使用服務(wù)器實現(xiàn)在Internet網(wǎng)中進行聊天,而聊天內(nèi)容也可以增加語音和視頻,還需要進行深入的研究。
參考文獻
[1]李愛菊,宋沖亞.QT局域網(wǎng)聊天項目制作[J].現(xiàn)代建設(shè),2012.
[2]薄曉蓉,張偉利.操作系統(tǒng)原理與實例分析[M].機械工業(yè)出版社,2005.
[3]謝曉芹.基于socket的網(wǎng)絡(luò)編程[J].南昌大學(xué)學(xué)報,1997.
[4]馬睿.基于QT的TCP網(wǎng)絡(luò)編程研究與應(yīng)用[J].福建電腦,2010(11):138.
楊晟(1993—),男,湖南株洲人,大學(xué)本科,現(xiàn)就讀于邵陽學(xué)院信息工程系通信工程專業(yè),研究方向:嵌入式系統(tǒng)。
陽泳(1994—),男,湖南邵陽人,瑤族,大學(xué)本科,現(xiàn)就讀于邵陽學(xué)院信息工程系電子信息工程專業(yè),研究方向:嵌入式系統(tǒng)。
余建坤(1966—),男,湖南冷水江人,碩士,副教授,研究方向:現(xiàn)電子設(shè)計理論。
通訊作者:
作者簡介: