亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Linux平臺的通信軟件的設(shè)計(jì)與實(shí)現(xiàn)

        2015-09-23 21:29:59雷文禮等
        現(xiàn)代電子技術(shù) 2015年17期
        關(guān)鍵詞:通信開源

        雷文禮等

        摘 要: 隨著智能通信設(shè)備性能的日益提升,即時(shí)通信系統(tǒng)移植的需求也越來越高,作為一種基于IP協(xié)議的應(yīng)用程序,即時(shí)通信系統(tǒng)能夠使不同智能設(shè)備的用戶進(jìn)行通信。Linux作為一種開源的操作系統(tǒng)平臺,在開發(fā)即時(shí)通信系統(tǒng)方面具有很好的應(yīng)用前景。基于Linux平臺采用Socket網(wǎng)絡(luò)編程設(shè)計(jì)并實(shí)現(xiàn)了即時(shí)網(wǎng)絡(luò)通信系統(tǒng),服務(wù)器經(jīng)過測試后,能夠穩(wěn)定運(yùn)行,客戶端圖形界面效果良好。該系統(tǒng)的設(shè)計(jì)為后續(xù)基于Linux平臺的軟件開發(fā)應(yīng)用提供了參考和借鑒。

        關(guān)鍵詞: Linux; 開源; Socket; 通信

        中圖分類號: TN915.4?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)17?0030?04

        Design and implementation of communication software based on Linux platform

        LEI Wenli, REN Xincheng, GAO Ying

        (College of Physics and Electronic Information, Yanan University, Yanan 716000, China)

        Abstract: With the improvement of intelligent communication equipment performance, the demand of instant communication system transplantation has become higher. As a kind of application program based on IP protocol, instant communication system can make different intelligent equipment users communicate with each other. As an open source operating system platform, Linux has better application prospect in developing instant communication system. The instant network communication system was designed and realized by using Socket network programming based on Linux platform. The tested server can operate stably, and the effect of GUI in client side is good. The system design provides the reference for subsequent software development and application based on Linux platform.

        Keywords: Linux; open source; Socket; communication

        0 引 言

        在互聯(lián)網(wǎng)高度發(fā)達(dá)的今天,MSN,QQ等網(wǎng)絡(luò)聊天軟件,使世界各地的相互聯(lián)系越來越緊密,不論身在何處,只要上網(wǎng),打開這些軟件,就可以和朋友聊天。Linux作為一個(gè)開源的操作系統(tǒng),正被越來越多的人認(rèn)識并應(yīng)用,它的特點(diǎn)在于操作系統(tǒng)源代碼的公開化[1]。然而,基于Linux平臺的聊天軟件仍然存在操作不夠人性化、交互界面不夠美觀等問題。因此,制作一個(gè)在Linux 操作系統(tǒng)下并且擁有人性化界面的即時(shí)通信工具,將給Linux操作系統(tǒng)的用戶帶來極大的方便。

        本文基于Linux平臺采用Qt編程設(shè)計(jì)并實(shí)現(xiàn)了即時(shí)網(wǎng)絡(luò)通信系統(tǒng),并對該系統(tǒng)進(jìn)行ADB在線調(diào)試,測試結(jié)果證明,設(shè)計(jì)的發(fā)送框和接收框的通信功能能夠順暢運(yùn)行。本系統(tǒng)的設(shè)計(jì)為后期設(shè)計(jì)某些相關(guān)通信系統(tǒng)提供了部分應(yīng)用基礎(chǔ)和開發(fā)經(jīng)驗(yàn)。

        1 Linux平臺

        Linux操作系統(tǒng)是Unix操作系統(tǒng)的一種克隆系統(tǒng),它誕生于1991年的10月5日(這是第一次正式向外公布的時(shí)間)。以后借助于Internet網(wǎng)絡(luò),并經(jīng)過全世界各地計(jì)算機(jī)愛好者的共同努力,現(xiàn)已成為今天世界上使用最多的一種Unix類操作系統(tǒng)[2],并且使用人數(shù)還在迅猛增長。

        在Linux平臺上運(yùn)行的軟件都是免費(fèi)使用的,且可以隨意的改動(dòng)代碼部分,只要他們是完全基于GNU的即可。

        2 系統(tǒng)設(shè)計(jì)

        本系統(tǒng)設(shè)計(jì)的基于Linux的聊天軟件采用C語言和Qt圖形開發(fā)軟件進(jìn)行編寫,利用TCP方式進(jìn)行連接[3?4]。通信服務(wù)方式整體采用C/S架構(gòu)。

        2.1 系統(tǒng)功能模塊劃分

        (1) 服務(wù)器功能模塊劃分

        登陸信息處理模塊:檢查登陸信息是否正確,并向客戶端返回登陸信息。如果信息正確,就將服務(wù)器端在線用戶信息發(fā)送給該用戶,并在服務(wù)器端將該用戶在線信息顯示出來。

        聊天信息處理模塊:給指定的用戶發(fā)送消息。

        申請信息處理模塊:注冊新用戶,確認(rèn)后保存該用戶信息。

        發(fā)布系統(tǒng)消息模塊:負(fù)責(zé)將用戶登錄信息發(fā)給每個(gè)客戶端,并改寫用戶在服務(wù)器端和客戶端的狀態(tài)。

        整個(gè)服務(wù)器功能模塊圖如圖1所示[5]。

        (2) 客戶端功能模塊劃分

        登陸功能模塊:連接服務(wù)器并登陸,并返回登陸信息。

        界面顯示模塊:顯示用戶好友及當(dāng)前狀態(tài)。

        聊天功能模塊:負(fù)責(zé)用戶間的聊天信息。

        離線消息模塊:接收和發(fā)送離線消息,并做相應(yīng)處理。

        配置信息模塊:負(fù)責(zé)用戶基本信息配置。

        2.2 服務(wù)器端設(shè)計(jì)

        服務(wù)器開始運(yùn)行后即處于監(jiān)聽狀態(tài),當(dāng)監(jiān)聽到有客戶端發(fā)出連接請求時(shí),服務(wù)器立刻進(jìn)入消息處理流程,由于采用并發(fā)服務(wù)器,所以可同時(shí)響應(yīng)多個(gè)請求。具體流程如圖2所示。

        2.2.1 服務(wù)器主要變量和函數(shù)

        服務(wù)器端用到的主要變量和函數(shù)如下:

        套接字描述字:int sockfd, client_sockfd

        套接字地址結(jié)構(gòu):struct sockaddr_in servAddr, cliAddr

        線程ID標(biāo)識:pthread_t pthd

        線程調(diào)用函數(shù):void gif_handle_client(int client_sockfd)

        發(fā)送聯(lián)系人狀態(tài)函數(shù):

        void gif_send_clients_contact_list(chat *client_loginid,int client_sockfd, int type)

        該函數(shù)的主要作用是當(dāng)用戶的在線狀態(tài)發(fā)生變動(dòng)時(shí),服務(wù)器要及時(shí)地做出更新,并向該用戶的聯(lián)系人發(fā)送該用戶狀態(tài)變更后的信息。

        獲取系統(tǒng)時(shí)間函數(shù):char *gif_get_system_time()

        該函數(shù)讀取當(dāng)前系統(tǒng)時(shí)間并隨消息一同發(fā)出。

        2.2.2 服務(wù)器消息處理模塊的設(shè)計(jì)與實(shí)現(xiàn)

        服務(wù)器的消息處理模塊主要由7部分組成,分別如下:

        用戶登錄消息處理模塊:當(dāng)服務(wù)器接收到用戶消息并判斷是登錄消息后,服務(wù)器將根據(jù)用戶發(fā)送過來的用戶名和密碼到users.db表中進(jìn)行匹配,如果匹配成功則把該用戶加入到online.db表中,設(shè)置用戶在線狀態(tài)為真的,同時(shí)調(diào)用發(fā)送聯(lián)系人在線列表函數(shù),向添加該用戶為好友的用戶發(fā)送該用戶的上線信息。如果匹配不成功,服務(wù)器將發(fā)送登錄失敗消息給客戶端,要求用戶重新登錄。

        添加好友信息處理模塊:當(dāng)服務(wù)器收到用戶請求加好友的消息時(shí),服務(wù)器首先在users.db中查找要被添加的用戶是否存在,如果該用戶存在則把該用戶的信息存儲到當(dāng)前用戶的好友文件中,同時(shí)在被添加好友用戶的_as.db表中保存當(dāng)前用戶的信息。

        刪除好友信息處理模塊:當(dāng)服務(wù)器接收到用戶的該消息請求時(shí),服務(wù)器根據(jù)用戶提供的好友用戶名刪除被指定的好友,同時(shí)將用戶聯(lián)系人表進(jìn)行更新,在被刪除的好友的被添加好友表_as.db中將當(dāng)前用戶刪除。

        用戶聊天信息轉(zhuǎn)發(fā)的處理模塊:當(dāng)服務(wù)器判斷用戶所請求的信息為聊天消息后,服務(wù)器根據(jù)用戶所指定的聊天對象到online.db表中查找被指定用戶是否在線,如果被指定用戶在線則提取他的套接字地址結(jié)構(gòu),并按照該套接字信息將消息轉(zhuǎn)發(fā)。如果用戶不在線則將消息標(biāo)識設(shè)定為離線消息,并將該消息寫入被指定用戶的離線消息文件中。

        用戶下線消息處理模塊:當(dāng)服務(wù)器判斷用戶所請求的信息為下線消息后,服務(wù)器將把用戶從online.db中刪除,設(shè)置該用戶狀態(tài)為下線,同時(shí)調(diào)用發(fā)送聯(lián)系人狀態(tài)函數(shù),將標(biāo)志位設(shè)置為離線向該用戶的聯(lián)系人發(fā)送。

        離線消息處理模塊:當(dāng)服務(wù)器判斷用戶所請求的信息為讀取離線消息后,服務(wù)器讀用戶的離線消息文件,如果該文件中有被標(biāo)識為新的離線消息時(shí),服務(wù)器將把該消息提取出來發(fā)送給用戶,同時(shí)把該消息標(biāo)識為已讀。

        刪除離線消息處理模塊:如果客戶做出了刪除離線消息的動(dòng)作,那么服務(wù)器端將會根據(jù)用戶的發(fā)送信息把該用戶的離線消息文件中的離線消息刪除。

        2.3 客戶端設(shè)計(jì)

        軟件的客戶端采用圖形化用戶接口方式,Qt圖形界面的主要特點(diǎn)就是事件觸發(fā),當(dāng)某一窗體消息需要被處理時(shí),處理引擎就會按照設(shè)計(jì)做出處理,圖3描述了客戶端的操作處理流程。

        客戶端運(yùn)行后,首先登錄服務(wù)器,如果登陸成功,服務(wù)器將在線的用戶信息發(fā)送給客戶端,此時(shí)客戶端即可查看到用戶信息。當(dāng)用戶會話時(shí),聊天信息窗體負(fù)責(zé)發(fā)送和接收用戶的聊天信息;用戶離線時(shí),該信息通過服務(wù)器轉(zhuǎn)發(fā)方式發(fā)送給離線用戶,當(dāng)對方上線時(shí)便可查看該離線消息。

        2.3.1 客戶端主要窗口設(shè)計(jì)

        本文設(shè)計(jì)的客戶端提供圖形用戶界面,程序運(yùn)行后,在主窗體上點(diǎn)擊相應(yīng)狀態(tài)的按鈕就會產(chǎn)生一個(gè)相應(yīng)的操作,包括主窗體,登錄窗口,添加用戶窗口,系統(tǒng)消息窗口,離線消息窗口,聊天窗口。

        主窗體:該窗體中包含了所有的用戶操作按鈕和好友列表,用戶的操作都在這個(gè)窗體中完成,如圖4所示。

        當(dāng)用戶的操作成功或者失敗時(shí),系統(tǒng)會顯示一條消息給用戶,以便提示用戶操作是否成功。在相關(guān)的函數(shù)內(nèi)將該窗口的激活屬性打開,消息窗口便會自動(dòng)彈出并顯示消息,如圖5所示。

        2.3.2 客戶端功能模塊的設(shè)計(jì)

        用戶認(rèn)證模塊:主要用到的函數(shù)為:connect(),send(),pthread_create()。當(dāng)用戶啟動(dòng)程序后,首先需要用戶登陸到服務(wù)器才能進(jìn)一步對軟件進(jìn)行操作,這一部分即為用戶認(rèn)證模塊。

        界面顯示模塊:當(dāng)用戶成功登陸后,在聯(lián)系人列表中將會顯示用戶的聯(lián)系人信息,在離線消息窗口中會顯示接收到的離線消息,這兩個(gè)視圖均是用列表視圖來實(shí)現(xiàn)的。

        消息處理模塊:當(dāng)客戶端和服務(wù)器建立連接后,客戶端會創(chuàng)建一個(gè)專門的線程維護(hù)客戶端和服務(wù)器之間的連接,該線程調(diào)用函數(shù)根據(jù)從服務(wù)器接收到的消息類型選擇消息處理模塊。

        更新聯(lián)系人列表信息:當(dāng)判斷接收到的消息為GIF_ADDRLIST_MSG時(shí),程序?qū)β?lián)系人視圖進(jìn)行刷新以便及時(shí)地顯示聯(lián)系人的當(dāng)前狀態(tài)。實(shí)現(xiàn)刷新的方法是,先將以前的樹移除,然后按照新的聯(lián)系人狀態(tài)進(jìn)行樹的繪制。

        聊天信息:當(dāng)接收服務(wù)器發(fā)送的消息類型為GIF_CHAT_MSG時(shí),程序首先要確定是誰發(fā)出的聊天請求,然后判斷聊天窗口是否開啟,如果未開啟則將開啟標(biāo)識設(shè)為真,然后打開聊天窗口。同時(shí)設(shè)置用戶和聯(lián)系人的顯示顏色,以便區(qū)分聊天消息的來源。

        消息請求成功或失敗信息:如果接收到了GIF_SUCCESS_N_ERROR_MSG類型的消息,則程序還會進(jìn)一步根據(jù)另外一個(gè)標(biāo)識符判斷是何種系統(tǒng)消息,并通過系統(tǒng)消息窗口顯示給用戶。

        離線消息:如果接收到的消息類型為GIF_OFFLINE_MSG,程序會按照界面顯示模塊中對樹視圖的創(chuàng)建步驟,創(chuàng)建一個(gè)顯示離線消息的視圖用來顯示離線消息。

        以上幾大模塊構(gòu)成了客戶端功能處理的主體,大部分操作和消息處理都是由這些模塊完成。

        3 結(jié) 語

        本文采用Qt編程技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了基于Linux平臺的聊天軟件功能,詳細(xì)描述了系統(tǒng)服務(wù)器端和客戶機(jī)端的實(shí)現(xiàn)過程,并對系統(tǒng)的工作流程和原理進(jìn)行了詳細(xì)論述。服務(wù)器經(jīng)過測試后,能夠穩(wěn)定運(yùn)行,客戶端圖形界面效果良好。本系統(tǒng)的設(shè)計(jì)為后續(xù)基于Linux平臺的軟件開發(fā)應(yīng)用提供了參考和借鑒。

        參考文獻(xiàn)

        [1] 黃偉敏.基于XMPP協(xié)議的Android即時(shí)通信系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2011,19(8):57?59.

        [2] 毛紅閣,郭紅,陳東,等.Android移動(dòng)通信序列化協(xié)議研究[J].南陽師范學(xué)院學(xué)報(bào),2012,11(6):47?49.

        [3] 攀建.ASP.NET+ADO.NET項(xiàng)目開發(fā)實(shí)例[M].北京:清華大學(xué)出版社,2004.

        [4] JONES A R.ASP.NET從入門到精通[M].高春蓉,谷宇,閻雋,等譯.北京:電子工業(yè)出版社,2002.

        [5] WORLEY S.ASP.NET技術(shù)內(nèi)幕[M].王文龍,劉湘寧,譯.北京:人民郵電出版社,2002.

        [6] 吉昂,袁杰,卞春華.Linux平臺上的網(wǎng)絡(luò)測試系統(tǒng)研究[J].現(xiàn)代電子技術(shù),2010,33(20):110?113.

        猜你喜歡
        通信開源
        五毛錢能買多少頭牛
        簡述計(jì)算機(jī)通信網(wǎng)絡(luò)安全與防護(hù)策略
        Android環(huán)境下主UI線程與子線程通信機(jī)制研究
        無線自組網(wǎng)在野戰(zhàn)防空通信系統(tǒng)中的應(yīng)用
        對數(shù)字微波通信技術(shù)的研究
        大家說:開源、人工智能及創(chuàng)新
        開源中國開源世界高峰論壇圓桌會議縱論開源與互聯(lián)網(wǎng)+創(chuàng)新2.0
        開源計(jì)算機(jī)輔助翻譯工具研究
        三级国产自拍在线观看| √天堂中文官网8在线| 91免费播放日韩一区二天天综合福利电影| 国产亚洲精品性爱视频| 亚洲中文字幕在线第六区| 亚洲国产精品一区二区第一 | 午夜理论片日本中文在线| 国产成人精品久久亚洲高清不卡 | 亚洲av成人一区二区三区色| 中国少妇久久一区二区三区| 女人色熟女乱| 国产一区日韩二区欧美三区| 中文字幕第一页在线无码一区二区| 国产一级黄色片在线播放| 日本大肚子孕妇交xxx| 中文 在线 日韩 亚洲 欧美| 国内精品久久久久久久久齐齐| 蜜桃成人永久免费av大| 国产成人国产三级国产精品| 内射人妻视频国内| 免费一区二区三区久久| 国产后入内射在线观看| 午夜一区二区三区观看 | 国产一极内射視颍一| 久久精品国产99精品九九| 久久蜜臀av一区三区| 国产精品黄色片在线看| 中国熟妇人妻xxxxx| 91精品国产91| 国产高清女主播在线观看| 无码人妻丰满熟妇区五十路 | 欧美性xxx久久| 国产三级av大全在线爽| 99精品人妻无码专区在线视频区| 国产久热精品无码激情 | av在线手机中文字幕| 国产精品熟女少妇不卡| 国产精品理论片| 欧美精品一级| 免费黄网站永久地址进入| 国产精品久久久久久久久绿色|