曲紅偉+姚思遠(yuǎn)
【摘要】 本文設(shè)計(jì)的通訊系統(tǒng)在LINUX操作系統(tǒng)下建立,系統(tǒng)采用C/S結(jié)構(gòu),客戶端與客戶端通過局域網(wǎng)內(nèi)使用Socket綁定地址來進(jìn)行通信。使用QT4作為開發(fā)工具,C++作為編程語言來進(jìn)行總體開發(fā)。采用多線程的處理方式來處理多對多的系統(tǒng)。不同的線程處理不同的任務(wù)。這樣會大大優(yōu)化資源的使用,整個(gè)系統(tǒng)完成以后可以進(jìn)行多人聊天,收發(fā)文件,刪除保存聊天內(nèi)容。
【關(guān)鍵詞】 Linux QT4 C/S Socket
一、前言
網(wǎng)絡(luò)技術(shù)發(fā)展越來越迅速,但免費(fèi)的通訊工具都不具備加密功能。這對于企業(yè)來說是很不安全的。在通訊里添加加密算法對企業(yè)來說是很有必要的。因此在linux平臺下使用QT進(jìn)行及時(shí)通訊的開發(fā)是非常有意義的。
二、系統(tǒng)設(shè)計(jì)
該系統(tǒng)的聊天消息采用的是UDP的傳輸方式。這種傳輸方式是一種不可靠,不需要連接的,不保證順序接收的,不包含流控和堵塞控制的協(xié)議的。但是這種方式卻能提供超高效的傳輸服務(wù)。文件的傳輸則選用了TCP的傳輸方式,TCP協(xié)議提供了需確定連接的,保證順序傳輸?shù)姆?wù)。在代碼的編寫上采用了SOCKET(套接字)的方法。
2.1 系統(tǒng)整體框架
局域網(wǎng)內(nèi)即時(shí)通訊工具,程序既要作為客戶端又要作為服務(wù)器端??梢院唵蔚睦斫鉃镻2P(端對端)。因?yàn)榫钟蚓W(wǎng)內(nèi)聊天可以看做是一個(gè)聊天室,每一個(gè)用戶發(fā)送的消息都是面向全體的,所以消息的發(fā)送采用UDP的方式。但是文件的傳輸要求較高,要保證文件的完整性,這就不能采用UDP的方式而采用TCP的方式。該系統(tǒng)實(shí)現(xiàn)用戶的登錄,退出,發(fā)送消息,刪除消息,保存聊天內(nèi)容,文件的傳輸與接收。系統(tǒng)的整體架構(gòu)如下圖1所示。
…
2.2 用戶操作系統(tǒng)
在局域網(wǎng)內(nèi)每一個(gè)用戶的IP地址都是不相同的,所以每一個(gè)IP可以看作是一個(gè)賬戶。當(dāng)用戶需要聊天時(shí),系統(tǒng)會首先獲取所有用戶的賬號信息,這是每個(gè)用戶在登錄運(yùn)行時(shí),通過發(fā)送UDP廣播來實(shí)現(xiàn)的。與此同時(shí)會告知所有的用戶。當(dāng)用戶離線時(shí)也會發(fā)送UDP廣播告知所有的用戶。
2.3 聊天界面設(shè)計(jì)
用戶的登錄,離開以及消息的傳輸都是通過UDP廣播的方式來處理的。聊天界面可以對字體進(jìn)行改變大小,加粗,改變顏色等相關(guān)處理。
三、信息處理與傳輸
3.1信息處理
企業(yè)內(nèi)部及時(shí)通訊軟件的數(shù)據(jù)的接收以及數(shù)據(jù)的處理都是通過用戶列表窗口類來完成的。數(shù)據(jù)處理函數(shù)主要是通過信息的switch語句來進(jìn)行匹配不同的數(shù)據(jù)類型,然后就可以響應(yīng)并調(diào)用相應(yīng)的處理函數(shù)就可以了。群聊消息的處理過程:當(dāng)switch語句判斷出消息的類型是聊天消息后,首先會根據(jù)約定的格式來讀消息的內(nèi)容,然后就會調(diào)用群聊消息的函數(shù)來處理消息,并在聊天窗口中來調(diào)用chat類中的getXessage()函數(shù)來顯示接收的消息。
3.1.1消息保存
我們有些時(shí)候會需要消息進(jìn)行保存,聊天內(nèi)容在界面沒有被刪除的時(shí)候,如果我們需要對聊天內(nèi)容進(jìn)行保存的時(shí)候。需要點(diǎn)擊界面上的消息保存圖標(biāo),這個(gè)圖標(biāo)對應(yīng)的類會在界面的窗口構(gòu)造出來的構(gòu)造函數(shù)中作為一個(gè)參數(shù)傳入。然后就會發(fā)出一個(gè)信號會有與之對應(yīng)的槽函數(shù)來響應(yīng),之后會彈出消息的保存界面來對消息進(jìn)行保存。
3.1.2消息刪除
當(dāng)我們需呀刪除信息時(shí)候,通過界面上的鏈接到一個(gè)槽函數(shù)的圖標(biāo),通過相應(yīng)的類來對于當(dāng)前界面聊天窗口內(nèi)的消息進(jìn)行刪除。點(diǎn)擊刪除按鈕是會首先對聊天界面是否有內(nèi)容進(jìn)行判斷,有的話就執(zhí)行相應(yīng)的操作,沒有為空的話就什么也不執(zhí)行。
3.2文件傳輸
當(dāng)我們需要傳輸文件時(shí),需要點(diǎn)擊文件傳輸按鈕,當(dāng)點(diǎn)擊后就會向程序中的其它的類發(fā)送一個(gè)信號,然后接下來的工作就交給相應(yīng)的槽函數(shù)來進(jìn)行處理,然后就由用戶列表中存在的相應(yīng)的類對應(yīng)的槽函數(shù)來完成文件服務(wù)器的使用工作。這樣的話文件的傳輸就能完成了。但是這個(gè)程序中每一次只能進(jìn)行一個(gè)的文件傳輸,下一個(gè)文件需要傳輸?shù)脑挶仨毜却弦粋€(gè)文件傳輸結(jié)束。
四、總結(jié)
本次設(shè)計(jì)成果主要面向的對象是對此有使用傾向的企業(yè),政府機(jī)關(guān)以及學(xué)校等內(nèi)部用來進(jìn)行信息交流的。再者就是企業(yè)內(nèi)部及時(shí)通訊軟件使用的是局域網(wǎng),這樣的話就可以將需要使用的計(jì)算機(jī)的IP加入到局域網(wǎng)中。再加上P2P技術(shù)不需要額外的服務(wù)器,這樣的話就會大大提高信息的安全性,使得交流的信息不會被泄露給第三方。
參 考 文 獻(xiàn)
[1]…張虹.軟件工程與軟件開發(fā)工具.清華大學(xué)出版社.2009(1)55-75.
[2]…黑新宏;基于Linux的嵌入式圖形用戶界面支持系統(tǒng)研究[D].西安理工大學(xué).2003.