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