文/吳開(kāi)鋼
基于Linux系統(tǒng)的即時(shí)通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
文/吳開(kāi)鋼
即時(shí)通信可滿足人們對(duì)于休閑娛樂(lè)以及聯(lián)絡(luò)溝通等多方面需求,因此文章基于Linux系統(tǒng)的即時(shí)通信系統(tǒng)為主要研究對(duì)象,首先對(duì)即時(shí)通信系統(tǒng)及發(fā)展現(xiàn)狀進(jìn)行簡(jiǎn)要分析,其次對(duì)系統(tǒng)設(shè)計(jì)進(jìn)行闡述,然后提出實(shí)現(xiàn)途徑,以供相關(guān)人士參考。
即時(shí)通信系統(tǒng) Linux系統(tǒng) P2P模式
當(dāng)前的嵌入式行業(yè),Linux系統(tǒng)已經(jīng)作為一個(gè)開(kāi)源的操作系統(tǒng),其應(yīng)用范圍越來(lái)越廣泛。因?yàn)樗脑创a公開(kāi),更方便開(kāi)發(fā)人員互相學(xué)習(xí)與交流,還可以在多種硬件平臺(tái)通行,據(jù)統(tǒng)計(jì),其現(xiàn)在已成為全球使用最多的一種UNIX類(lèi)操作系統(tǒng)。文章對(duì)基于Linux系統(tǒng)的即時(shí)通信系統(tǒng)設(shè)計(jì)進(jìn)行分析與闡述。
即時(shí)通信是一種新型的通信方式和網(wǎng)絡(luò)通訊技術(shù),是通過(guò)互聯(lián)網(wǎng)或者其他類(lèi)型的網(wǎng)絡(luò)建立的一種新型虛擬網(wǎng)絡(luò)通信環(huán)境,因?yàn)橛杏?jì)算機(jī)鍵盤(pán)和無(wú)線設(shè)備配合,人們可以及時(shí)有效地進(jìn)行交流與溝通。
互聯(lián)網(wǎng)技術(shù)應(yīng)用不斷深入人們的日常生活工作和學(xué)習(xí)中,而即時(shí)通信系統(tǒng)也在不斷變革,經(jīng)由傳統(tǒng)的文字通信逐漸演變?yōu)檎Z(yǔ)音視頻即時(shí)通信。最近的權(quán)威調(diào)查結(jié)果顯示,當(dāng)前世界上已經(jīng)有二十五億人擁有一個(gè)以上的即時(shí)通信應(yīng)用賬戶(hù)??紤]到當(dāng)前互聯(lián)網(wǎng)用戶(hù)不斷增加,其對(duì)即時(shí)通信系統(tǒng)的使用也將大大拓展市場(chǎng)需求。比如,現(xiàn)在最常見(jiàn)的情景不是傳統(tǒng)的名片交換,而是微信好友的添加。
跟傳統(tǒng)的即時(shí)通信系統(tǒng)相比,系統(tǒng)無(wú)需中央服務(wù)器,應(yīng)用的是可以分布于Internet網(wǎng)內(nèi)部不同地域的分布式服務(wù)器,此類(lèi)服務(wù)器需要保證網(wǎng)段內(nèi)用戶(hù)相互連接,為保證信息通訊即時(shí),需要將其與相鄰的服務(wù)器相連接。該系統(tǒng)服務(wù)器架構(gòu)和現(xiàn)代的電子郵件系統(tǒng)相同,任何一臺(tái)服務(wù)器發(fā)生故障都會(huì)對(duì)服務(wù)器控制功能造成影響,降低了服務(wù)器的服務(wù)質(zhì)量。
即時(shí)通信系統(tǒng)結(jié)構(gòu)一般分為兩種模式:客戶(hù)機(jī)/服務(wù)器模式以及P2P模式。文章采用客戶(hù)機(jī)/服務(wù)器模式來(lái)開(kāi)發(fā)系統(tǒng)。即時(shí)通信客戶(hù)機(jī)/服務(wù)器模型簡(jiǎn)稱(chēng)C/S模型。C/S模型是一種非對(duì)稱(chēng)的非編程模式,其基本思想就從應(yīng)用層面可以將功能劃分為兩個(gè)部分,可以在不同的計(jì)算機(jī)上運(yùn)行,各種任務(wù)都進(jìn)行了明確的分工,形成一個(gè)完整的應(yīng)用功能。其中需要合理設(shè)置即時(shí)通信服務(wù)器,最主要是能夠?qū)νㄐ趴蛻?hù)機(jī)提出的服務(wù)請(qǐng)求進(jìn)行應(yīng)答,為用戶(hù)提供全方位的服務(wù)。
表1:協(xié)議中的命令
為了使服務(wù)器端和客戶(hù)端各模塊之間的多函數(shù)通信更加規(guī)范,需要建立統(tǒng)一的協(xié)議,如表1。文章采用的是以用戶(hù)數(shù)據(jù)包(UDP)方式傳輸?shù)顷?、下線、消息、列表、更新和注冊(cè)等請(qǐng)求,因此需要將報(bào)文中含有的信息通過(guò)協(xié)議的形式上報(bào)。
服務(wù)器端的每個(gè)狀態(tài)之間的關(guān)系必須明確,在服務(wù)器端模塊間不可以存在并發(fā)關(guān)系,而且在main函數(shù)中初始狀態(tài)必須設(shè)置為接收狀態(tài),以便接收客戶(hù)端發(fā)送的請(qǐng)求,然后進(jìn)行解析。在解析出客戶(hù)端的請(qǐng)求后,將接收狀態(tài)返回轉(zhuǎn)變?yōu)樘幚頎顟B(tài),在處理請(qǐng)求后將其變?yōu)榻邮諣顟B(tài),最后才等待接收客戶(hù)端的后續(xù)要求。其特別之處在于,服務(wù)器端的登陸模塊需要處理異步操作。
客戶(hù)端的狀態(tài)分為4個(gè)異步模塊:需分模塊進(jìn)行更新,有步驟的向客戶(hù)端發(fā)送并更新數(shù)據(jù)報(bào),而服務(wù)器端則需定期接收數(shù)據(jù)報(bào),如果超出規(guī)定時(shí)間,服務(wù)器將接受不到在線客戶(hù)端發(fā)送的更新報(bào)文,并最終將之標(biāo)記為離線狀態(tài);輸入—發(fā)送模塊,該模塊的功能是等待客戶(hù)輸入信息,在其輸入后,該模塊立即將數(shù)據(jù)報(bào)發(fā)送出去,接著繼續(xù)等待客戶(hù)下一輪信息輸入;接收—輸出模塊,該模塊的作用是接收服務(wù)器端的數(shù)據(jù)報(bào),并且在客戶(hù)端的輸出設(shè)備上顯示有效數(shù)據(jù);列表模塊,該模塊需定期向服務(wù)器發(fā)送請(qǐng)求列表數(shù)據(jù)報(bào),通過(guò)服務(wù)器查詢(xún)?cè)诰€數(shù)據(jù)庫(kù)中的在線用戶(hù)端ID,并且打包將其發(fā)送至客戶(hù)端。
系統(tǒng)需要約束用戶(hù)的權(quán)限,而用戶(hù)權(quán)限主要是由服務(wù)器端進(jìn)行管控。當(dāng)管理員登錄系統(tǒng)后,啟動(dòng)服務(wù)器,可以對(duì)用戶(hù)的登錄與操作記錄進(jìn)行匯總和篩選。此類(lèi)數(shù)據(jù)信息存入后臺(tái)數(shù)據(jù)文件中進(jìn)行存儲(chǔ),一般用戶(hù)可以通過(guò)注冊(cè)并通過(guò)服務(wù)器驗(yàn)證后方可發(fā)揮出服務(wù)器的使用功能。服務(wù)器功能主要如下:驗(yàn)證登陸信息、發(fā)送系統(tǒng)信息,對(duì)新用戶(hù)的申請(qǐng)信息進(jìn)行處理與更新。
客戶(hù)端的基本功能如下:用戶(hù)登陸與注冊(cè),需詳細(xì)記錄用戶(hù)的個(gè)人信息,如郵箱等,在注冊(cè)成功后返回賬號(hào),將其作為用戶(hù)系統(tǒng)的唯一表示,在二次登陸時(shí),賬號(hào)和密碼驗(yàn)證成功后便可登陸;用戶(hù)間的信息互通,用戶(hù)好友列表中互加好友就可以完成文字信息以及文件信息的傳遞;用戶(hù)信息的查詢(xún)與修正,在用戶(hù)聊天時(shí)可以對(duì)感興趣的用戶(hù)資料進(jìn)行瀏覽查閱。
即時(shí)通信系統(tǒng)依賴(lài)互聯(lián)網(wǎng)和相關(guān)應(yīng)用配置才能進(jìn)行信息的接收、處理和傳輸,所以假如在此過(guò)程中程序或者網(wǎng)絡(luò)發(fā)生錯(cuò)誤或遭到攻擊,基本配置出現(xiàn)錯(cuò)誤,則極易引發(fā)通信系統(tǒng)故障。為了有效解決此類(lèi)故障,需要采用積極的措施如改良后的通信技術(shù)來(lái)對(duì)通信網(wǎng)絡(luò)系統(tǒng)進(jìn)行維護(hù)。常見(jiàn)的例子是,因?yàn)橄到y(tǒng)被破壞造成系統(tǒng)不能正常運(yùn)行,一般的處理手段是,立即與系統(tǒng)管理人員聯(lián)系,重新啟動(dòng)系統(tǒng)。若系統(tǒng)中的某一業(yè)務(wù)模塊發(fā)生故障不能正常運(yùn)行,則需要對(duì)數(shù)據(jù)庫(kù)表進(jìn)行檢查,根據(jù)數(shù)據(jù)字典的實(shí)際情況恢復(fù)相關(guān)數(shù)據(jù)表結(jié)構(gòu)。
綜上所述,當(dāng)前即時(shí)通信被看做是電子郵件、WWW、FTP外的第四種通信應(yīng)用服務(wù),對(duì)傳統(tǒng)網(wǎng)絡(luò)的應(yīng)用造成了很大的沖擊。文章對(duì)即時(shí)通信系統(tǒng)的含義和發(fā)展現(xiàn)狀進(jìn)行簡(jiǎn)要分析,并從系統(tǒng)設(shè)計(jì)與實(shí)施途徑入手進(jìn)行研究,從而促進(jìn)通信系統(tǒng)的長(zhǎng)遠(yuǎn)發(fā)展。
[1]楊化志,許蘭,李培峰,等.基于IPQueue的即時(shí)通信協(xié)議還原系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2012(03):46-51.
[2]翁錦深,葉曉靖,黎德生.基于Linux的RFID交互系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2012(18):1-4.
作者單位 廣東九聯(lián)科技股份有限公司 廣東省惠州市516007
吳開(kāi)鋼(1984-),男,廣東省汕尾市人。大學(xué)本科學(xué)歷?,F(xiàn)從事linux和android系統(tǒng)工作。