劉波
摘要:本文在闡述即時(shí)通信技術(shù)支撐的基礎(chǔ)上,分析即時(shí)通信設(shè)計(jì)思路,并就其數(shù)據(jù)庫、數(shù)據(jù)格式、服務(wù)器、客戶端等要素展開系統(tǒng)設(shè)計(jì)。期望能實(shí)現(xiàn)Linux與即時(shí)通信的深度融合,繼而最大限度發(fā)揮Linux系統(tǒng)的功能,促進(jìn)即時(shí)通信的進(jìn)一步發(fā)展。
關(guān)鍵詞:Linux系統(tǒng);即時(shí)通信;C/S架構(gòu)
中圖分類號(hào): TP311? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)04-0048-02
作為一種類Unix操作系統(tǒng),Linux系統(tǒng)在現(xiàn)代通信工程中的應(yīng)用不斷深入,如在個(gè)人計(jì)算機(jī)、服務(wù)器或者嵌入式終端設(shè)備中均有Linux系統(tǒng)應(yīng)用的痕跡。從應(yīng)用效果來看,該系統(tǒng)的開放性較強(qiáng),其能實(shí)現(xiàn)多用戶、多任務(wù)的同時(shí)操作,可靠性較為突出。但該系統(tǒng)應(yīng)用仍存在一定缺陷,在通信軟件應(yīng)用中,國(guó)內(nèi)外較多通信軟件的功能僅局限于Linux版本,這使得通信軟件不具備開源性,同時(shí)受通信協(xié)議差異性的影響,各軟件之間不能互相通信。新時(shí)期,要實(shí)現(xiàn)即時(shí)通信技術(shù)的進(jìn)一步發(fā)展,有必要進(jìn)行Linux通信系統(tǒng)的開源設(shè)計(jì)。
1 即時(shí)通信的技術(shù)支撐
1.1 通信傳輸控制協(xié)議
即時(shí)通信的實(shí)現(xiàn)離不開必要的傳輸控制協(xié)議。就傳輸控制協(xié)議而言,其本身具有面向連接的特點(diǎn),而且可靠性較為突出。在即時(shí)通信過程中,傳輸控制協(xié)議對(duì)于數(shù)據(jù)的傳輸具有深刻影響。實(shí)際傳輸中,該協(xié)議首先會(huì)進(jìn)行三次握手,由此實(shí)現(xiàn)服務(wù)器與客戶端之間的系統(tǒng)連接。隨后在經(jīng)過四次揮手操作后,實(shí)現(xiàn)服務(wù)器與客戶端之間的斷連控制。需注意的是,在數(shù)據(jù)傳輸中,一旦數(shù)據(jù)驗(yàn)證結(jié)果與原數(shù)據(jù)存在差異,則需要進(jìn)行數(shù)據(jù)的再次傳輸,這樣能保證數(shù)據(jù)的準(zhǔn)確性?,F(xiàn)階段,在容量數(shù)據(jù)傳輸中,傳輸控制協(xié)議的應(yīng)用能有效確保數(shù)據(jù)的可靠性;所不足之處在于該協(xié)議的應(yīng)用會(huì)增加數(shù)據(jù)傳輸開銷,整體傳輸速度較慢。
1.2 C/S架構(gòu)
基于傳輸控制協(xié)議建設(shè)C/S架構(gòu),能為L(zhǎng)inux即使通信的實(shí)現(xiàn)創(chuàng)造有利條件(見圖1)。就C/S架構(gòu)而言,其本身既有非對(duì)稱性的特點(diǎn),該架構(gòu)將數(shù)據(jù)庫服務(wù)作用技術(shù)核心,隨后通過網(wǎng)絡(luò)連接,使得多個(gè)終端構(gòu)成一個(gè)整體,最后分職能的進(jìn)行客戶端和服務(wù)器的管理應(yīng)用。就服務(wù)器而言,其實(shí)響應(yīng)客戶端請(qǐng)求并提供相應(yīng)服務(wù)的基礎(chǔ)載體,而客戶端由具體的YONG 戶操作,其會(huì)根據(jù)自己的實(shí)際所需要,向服務(wù)器發(fā)送不同的請(qǐng)求和指令。通信過程中,服務(wù)器起到中轉(zhuǎn)兩個(gè)客戶信息數(shù)據(jù)的在作用。
2 基于Linux的即時(shí)通信系統(tǒng)設(shè)計(jì)思路
現(xiàn)階段,市場(chǎng)上即時(shí)通信一般按照?qǐng)D2的模式進(jìn)行設(shè)計(jì)。當(dāng)設(shè)計(jì)人員打開應(yīng)用程序后,主界面會(huì)顯示三個(gè)基本功能區(qū),該功能區(qū)分別為:注冊(cè)賬戶、登錄和退出。就注冊(cè)界面而言,其提供注冊(cè)成功、注冊(cè)失敗兩種提示服務(wù);而在登錄界面管理中,登錄成功需要用戶名、密碼的完全正確和匹配。用戶登錄成功后,用戶可進(jìn)行功能界面的系統(tǒng)操作,需在會(huì)的是,用戶身份不同,其功能界面也有一定差異,作為系統(tǒng)的管理者,管理員用戶功能界面,界面既有獨(dú)享功能。
3 基于Linux的即時(shí)通信系統(tǒng)設(shè)計(jì)內(nèi)容
3.1 數(shù)據(jù)庫
數(shù)據(jù)庫在即時(shí)通信數(shù)據(jù)信息管理中發(fā)揮著重要作用,其不僅能用來存放注冊(cè)用戶的用戶名和密碼,而且能對(duì)聊天信息進(jìn)行備份記錄。即時(shí)通信系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)中,設(shè)計(jì)人員需要在創(chuàng)建表格、添加數(shù)據(jù)的基礎(chǔ)上,做好數(shù)據(jù)更新和數(shù)據(jù)查詢功能的有效設(shè)計(jì);通常,該設(shè)計(jì)過程通過SQLite的編程接口函數(shù)來實(shí)現(xiàn),并且在數(shù)據(jù)庫設(shè)計(jì)中,需保證打開函數(shù)和關(guān)閉函數(shù)處于成對(duì)控制狀態(tài),這樣能避免數(shù)據(jù)庫未關(guān)閉對(duì)其他程序的影響,同時(shí)其能有效避免多程序同時(shí)應(yīng)用導(dǎo)致數(shù)據(jù)庫系統(tǒng)崩潰問題的發(fā)生。
基于Linux開展通信系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)中,將數(shù)據(jù)庫表格名稱命名為user,并將數(shù)據(jù)調(diào)整為TEXT類型,隨后按照四個(gè)4個(gè)字段進(jìn)行數(shù)據(jù)存儲(chǔ),1~4字段分別用來存放用戶名、密碼、接收方用戶名和聊天內(nèi)容。
3.2 數(shù)據(jù)格式
數(shù)據(jù)格式直接影響著用戶端與服務(wù)器之間數(shù)據(jù)傳輸?shù)墓δ軐?shí)現(xiàn)程度,為確保即時(shí)通信功能的實(shí)現(xiàn),設(shè)計(jì)人員多會(huì)通過協(xié)議的方式對(duì)數(shù)據(jù)格式進(jìn)行規(guī)范,以此來確保模塊之間數(shù)據(jù)通信的實(shí)現(xiàn)。本設(shè)計(jì)中,針對(duì)Linux系統(tǒng)下的數(shù)據(jù)格式管理,側(cè)重以下設(shè)計(jì)要點(diǎn)管理:其一,將命令號(hào)存放在action當(dāng)中,同時(shí)要求實(shí)現(xiàn)命令、質(zhì)量的對(duì)應(yīng)和差異化管理;其二,確定用戶名存放組為char類型,并且用戶名的長(zhǎng)度不得超過30;其三,在接收方管理中,對(duì)接收方用戶名、密碼、消息內(nèi)容的格式進(jìn)行系統(tǒng)管理,確保其滿足實(shí)際的格式應(yīng)用需要;其四,采用二維數(shù)組的方式存放在線用戶,并通過最后三個(gè)參數(shù)對(duì)信息行數(shù)、列數(shù)、具體信息進(jìn)行記錄。需注意的是,在具體信息記錄中,要求后期操作者最多可實(shí)現(xiàn)100條消息的記錄。
經(jīng)此設(shè)計(jì)中,客戶端、服務(wù)器在通信傳輸中均是以結(jié)構(gòu)體的形式來傳輸信息,同時(shí)基于這些結(jié)構(gòu)體信息,客戶端、服務(wù)端又可在相應(yīng)指令的控制下,結(jié)合功能需要獲取數(shù)據(jù),確保了通信的準(zhǔn)確實(shí)現(xiàn)。
3.3 服務(wù)器
Linux系統(tǒng)即時(shí)通信中,借助于socket編程接口可實(shí)現(xiàn)整個(gè)網(wǎng)絡(luò)編程的規(guī)范編寫。新系統(tǒng)采用了基于TCP的流式套接字類型,在IP地質(zhì)和端口號(hào)存儲(chǔ)中,系統(tǒng)使用sockaddr-in結(jié)構(gòu)進(jìn)行存儲(chǔ);同時(shí)在服務(wù)器設(shè)計(jì)中考慮不同服務(wù)終端存儲(chǔ)數(shù)據(jù)的模式差異,做好大端、小端模式的系統(tǒng)劃分;此外,設(shè)計(jì)人員加強(qiáng)地址之間的有效轉(zhuǎn)化,這有效地確保了通信系統(tǒng)服務(wù)功能的實(shí)現(xiàn)。
在服務(wù)器端搭流程管理中,首先采用socket函數(shù)創(chuàng)建套接字,其次,在bind函數(shù)的支撐下,對(duì)套接字綁定相應(yīng)的IP地質(zhì)和端口號(hào),隨后分別采用listen函數(shù)、accept函數(shù)監(jiān)聽客戶端請(qǐng)求,并實(shí)現(xiàn)服務(wù)器與客戶端的有效連接。最后,服務(wù)端與客戶端的信息手法通過read/write指令來實(shí)現(xiàn)。本次Linux即時(shí)通信系統(tǒng)服務(wù)器設(shè)計(jì)中,針對(duì)服務(wù)器流程的搭建和管理,注重兩種套接字的系統(tǒng)管理:其一,分別采用socket函數(shù)、listen函數(shù)來新建套接字和監(jiān)聽套接字,其二,在專門通信套接字的作用下,完成客戶端之間的銜接。需注意的是,針對(duì)listen函數(shù)的應(yīng)用,應(yīng)創(chuàng)建多個(gè)線程,然后通過主線程監(jiān)測(cè)客戶端的請(qǐng)求,然后通過新建線程來專門處理客戶端的通信。而就accept函數(shù)而言,其本身是一個(gè)阻塞型函數(shù),即當(dāng)客戶端沒有請(qǐng)求連接時(shí),該函數(shù)一追會(huì)處于阻塞狀態(tài);而當(dāng)客戶端與服務(wù)器連通后,系統(tǒng)會(huì)在receive-msg函數(shù)的作用下,執(zhí)行通信線程,這樣能確保不同功能的先,并將相應(yīng)的信息反饋給目標(biāo)客戶端。
后期使用中,基于Linux系統(tǒng)的即時(shí)通信服務(wù)端按照注冊(cè)、登錄、群聊、私聊、修改密碼、查看連天記錄、踢人、禁言與解禁的流程進(jìn)行管理。具體管理中,本系統(tǒng)還具有以下功能:其一,在注冊(cè)界面,針對(duì)新注冊(cè)用戶,對(duì)用戶名進(jìn)行檢測(cè),將已注冊(cè)用戶名按照錯(cuò)誤號(hào)實(shí)施返回處理;其二,在群聊過程中,先將用戶需要發(fā)送的信息保存到數(shù)據(jù)庫的聊天字段,隨后轉(zhuǎn)移發(fā)送給所有在線用戶;其三,在向私聊用戶發(fā)送信息時(shí),按照檢測(cè)用戶是否在線、向在線用戶保存、發(fā)送信息的模式進(jìn)行管理。其四,用戶名密碼修改按照update命令進(jìn)行,并且在password字段密碼更改中,其對(duì)會(huì)對(duì)新密碼的格式、安全程度進(jìn)行檢測(cè),確保用戶信息安全。其五,踢人功能實(shí)現(xiàn)中,先將其通信套接字置零,隨后移出在線列表。
3.4 客戶端
客戶端的應(yīng)用應(yīng)有助于用戶操作的便捷性,進(jìn)而提升通信的效率性、穩(wěn)定性。在C/S框架下,基于Linux系統(tǒng)的即時(shí)通信實(shí)現(xiàn)按照開始、用socket函數(shù)創(chuàng)建套接字、用accept函數(shù)連接,設(shè)置服務(wù)器IP地址可端口號(hào)、用read/write函數(shù)進(jìn)行客戶端信息收發(fā)的流程進(jìn)行建設(shè)。
客戶端開始運(yùn)行后,其首先會(huì)顯示主頁面,在主頁面上,用戶會(huì)按照注冊(cè)、登錄、退出的指令進(jìn)行相應(yīng)操作。指令不同,其對(duì)應(yīng)的執(zhí)行函數(shù)也要一定差異性。當(dāng)用戶實(shí)現(xiàn)準(zhǔn)確登錄后,在多線程技術(shù)的支撐下,整個(gè)系統(tǒng)可以實(shí)施讀寫分離操作。該傳輸控制模式下,主線程、新建線程的工作路徑具有較大區(qū)別。就主線程而依然,其會(huì)在分析用戶身份的基礎(chǔ)上,對(duì)接相應(yīng)的功能界面,隨后,在用戶輸入指令的作用下,整個(gè)系統(tǒng)會(huì)開始想服務(wù)器發(fā)送消息。而就新建線程而言,其能在接收服務(wù)器發(fā)送消息后,對(duì)消息的結(jié)構(gòu)體進(jìn)行解析,繼而獲取相應(yīng)數(shù)據(jù),完成指令信息對(duì)應(yīng)功能的顯示。
在客戶執(zhí)行流程管理中,本次設(shè)計(jì)關(guān)注向服務(wù)器發(fā)送消息、從服務(wù)器讀取信息的優(yōu)化。一方面,在向服務(wù)器發(fā)送消息時(shí),對(duì)用戶的身份進(jìn)行分析,然后系統(tǒng)顯示對(duì)應(yīng)的功能。如相比于普通用戶,管理員用戶具有踢人、新增用戶、禁言、解禁等諸多功能。另一方面,從服務(wù)器讀取信息中,強(qiáng)化信息結(jié)構(gòu)體解析和顯示管理,確保用戶接收信息的效率性、準(zhǔn)確性。
完成Linux系統(tǒng)即時(shí)通信系統(tǒng)設(shè)計(jì)后,在Redhat操作系統(tǒng)環(huán)境下進(jìn)行功能測(cè)試,新設(shè)計(jì)系統(tǒng)具備開源能力,滿足即時(shí)通信控制需要。
4 結(jié)論
對(duì)Linux系統(tǒng)進(jìn)行設(shè)計(jì)優(yōu)化,能進(jìn)一步提升即時(shí)通信的效率與質(zhì)量。本次設(shè)計(jì)中,在C語言的支撐下,基于Linux平臺(tái)開展即時(shí)通信系統(tǒng)設(shè)計(jì),新設(shè)計(jì)系統(tǒng)采用TCP協(xié)議對(duì)C/S架構(gòu)進(jìn)行管理,同時(shí)建立SQLite數(shù)據(jù)庫,進(jìn)行用戶信息存儲(chǔ),最后通過Redhat操作系統(tǒng)環(huán)境進(jìn)行新系統(tǒng)測(cè)試。測(cè)試結(jié)果表明,新設(shè)計(jì)系統(tǒng)不僅滿足了即時(shí)通信注冊(cè)、登錄到查看聊天記錄的所有基本功能,而且為管理員新增用戶獨(dú)享 踢人、禁言和解禁等諸多功能,其有效地實(shí)現(xiàn)了即時(shí)通信中Linux系統(tǒng)的開源管理,這滿足了即時(shí)通信需要,提升了系統(tǒng)運(yùn)行的穩(wěn)定性、實(shí)用性。
參考文獻(xiàn):
[1] 侯?yuàn)?基于嵌入式Linux的多關(guān)節(jié)機(jī)器人通信系統(tǒng)設(shè)計(jì)[J].通信電源技術(shù),2020,196(4):60-61.
【通聯(lián)編輯:李雅琪】