999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Linux平臺的通信軟件的設計與實現

2015-09-23 21:29:59雷文禮等
現代電子技術 2015年17期

雷文禮等

摘 要: 隨著智能通信設備性能的日益提升,即時通信系統移植的需求也越來越高,作為一種基于IP協議的應用程序,即時通信系統能夠使不同智能設備的用戶進行通信。Linux作為一種開源的操作系統平臺,在開發即時通信系統方面具有很好的應用前景?;贚inux平臺采用Socket網絡編程設計并實現了即時網絡通信系統,服務器經過測試后,能夠穩定運行,客戶端圖形界面效果良好。該系統的設計為后續基于Linux平臺的軟件開發應用提供了參考和借鑒。

關鍵詞: Linux; 開源; Socket; 通信

中圖分類號: TN915.4?34 文獻標識碼: 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 引 言

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

本文基于Linux平臺采用Qt編程設計并實現了即時網絡通信系統,并對該系統進行ADB在線調試,測試結果證明,設計的發送框和接收框的通信功能能夠順暢運行。本系統的設計為后期設計某些相關通信系統提供了部分應用基礎和開發經驗。

1 Linux平臺

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

在Linux平臺上運行的軟件都是免費使用的,且可以隨意的改動代碼部分,只要他們是完全基于GNU的即可。

2 系統設計

本系統設計的基于Linux的聊天軟件采用C語言和Qt圖形開發軟件進行編寫,利用TCP方式進行連接[3?4]。通信服務方式整體采用C/S架構。

2.1 系統功能模塊劃分

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

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

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

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

發布系統消息模塊:負責將用戶登錄信息發給每個客戶端,并改寫用戶在服務器端和客戶端的狀態。

整個服務器功能模塊圖如圖1所示[5]。

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

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

界面顯示模塊:顯示用戶好友及當前狀態。

聊天功能模塊:負責用戶間的聊天信息。

離線消息模塊:接收和發送離線消息,并做相應處理。

配置信息模塊:負責用戶基本信息配置。

2.2 服務器端設計

服務器開始運行后即處于監聽狀態,當監聽到有客戶端發出連接請求時,服務器立刻進入消息處理流程,由于采用并發服務器,所以可同時響應多個請求。具體流程如圖2所示。

2.2.1 服務器主要變量和函數

服務器端用到的主要變量和函數如下:

套接字描述字:int sockfd, client_sockfd

套接字地址結構:struct sockaddr_in servAddr, cliAddr

線程ID標識:pthread_t pthd

線程調用函數:void gif_handle_client(int client_sockfd)

發送聯系人狀態函數:

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

該函數的主要作用是當用戶的在線狀態發生變動時,服務器要及時地做出更新,并向該用戶的聯系人發送該用戶狀態變更后的信息。

獲取系統時間函數:char *gif_get_system_time()

該函數讀取當前系統時間并隨消息一同發出。

2.2.2 服務器消息處理模塊的設計與實現

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

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

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

刪除好友信息處理模塊:當服務器接收到用戶的該消息請求時,服務器根據用戶提供的好友用戶名刪除被指定的好友,同時將用戶聯系人表進行更新,在被刪除的好友的被添加好友表_as.db中將當前用戶刪除。

用戶聊天信息轉發的處理模塊:當服務器判斷用戶所請求的信息為聊天消息后,服務器根據用戶所指定的聊天對象到online.db表中查找被指定用戶是否在線,如果被指定用戶在線則提取他的套接字地址結構,并按照該套接字信息將消息轉發。如果用戶不在線則將消息標識設定為離線消息,并將該消息寫入被指定用戶的離線消息文件中。

用戶下線消息處理模塊:當服務器判斷用戶所請求的信息為下線消息后,服務器將把用戶從online.db中刪除,設置該用戶狀態為下線,同時調用發送聯系人狀態函數,將標志位設置為離線向該用戶的聯系人發送。

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

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

2.3 客戶端設計

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

客戶端運行后,首先登錄服務器,如果登陸成功,服務器將在線的用戶信息發送給客戶端,此時客戶端即可查看到用戶信息。當用戶會話時,聊天信息窗體負責發送和接收用戶的聊天信息;用戶離線時,該信息通過服務器轉發方式發送給離線用戶,當對方上線時便可查看該離線消息。

2.3.1 客戶端主要窗口設計

本文設計的客戶端提供圖形用戶界面,程序運行后,在主窗體上點擊相應狀態的按鈕就會產生一個相應的操作,包括主窗體,登錄窗口,添加用戶窗口,系統消息窗口,離線消息窗口,聊天窗口。

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

當用戶的操作成功或者失敗時,系統會顯示一條消息給用戶,以便提示用戶操作是否成功。在相關的函數內將該窗口的激活屬性打開,消息窗口便會自動彈出并顯示消息,如圖5所示。

2.3.2 客戶端功能模塊的設計

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

界面顯示模塊:當用戶成功登陸后,在聯系人列表中將會顯示用戶的聯系人信息,在離線消息窗口中會顯示接收到的離線消息,這兩個視圖均是用列表視圖來實現的。

消息處理模塊:當客戶端和服務器建立連接后,客戶端會創建一個專門的線程維護客戶端和服務器之間的連接,該線程調用函數根據從服務器接收到的消息類型選擇消息處理模塊。

更新聯系人列表信息:當判斷接收到的消息為GIF_ADDRLIST_MSG時,程序將對聯系人視圖進行刷新以便及時地顯示聯系人的當前狀態。實現刷新的方法是,先將以前的樹移除,然后按照新的聯系人狀態進行樹的繪制。

聊天信息:當接收服務器發送的消息類型為GIF_CHAT_MSG時,程序首先要確定是誰發出的聊天請求,然后判斷聊天窗口是否開啟,如果未開啟則將開啟標識設為真,然后打開聊天窗口。同時設置用戶和聯系人的顯示顏色,以便區分聊天消息的來源。

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

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

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

3 結 語

本文采用Qt編程技術,設計并實現了基于Linux平臺的聊天軟件功能,詳細描述了系統服務器端和客戶機端的實現過程,并對系統的工作流程和原理進行了詳細論述。服務器經過測試后,能夠穩定運行,客戶端圖形界面效果良好。本系統的設計為后續基于Linux平臺的軟件開發應用提供了參考和借鑒。

參考文獻

[1] 黃偉敏.基于XMPP協議的Android即時通信系統設計[J].電子設計工程,2011,19(8):57?59.

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

[3] 攀建.ASP.NET+ADO.NET項目開發實例[M].北京:清華大學出版社,2004.

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

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

[6] 吉昂,袁杰,卞春華.Linux平臺上的網絡測試系統研究[J].現代電子技術,2010,33(20):110?113.

主站蜘蛛池模板: 一本大道香蕉久中文在线播放 | 成年女人a毛片免费视频| 欧美三级视频网站| 另类欧美日韩| 中文字幕精品一区二区三区视频| 亚洲国产高清精品线久久| 久久综合九色综合97网| 99久久精品无码专区免费| 亚洲区欧美区| 国产又粗又猛又爽视频| 久久黄色免费电影| 综合天天色| 中文字幕一区二区人妻电影| 久久精品只有这里有| 国产一二视频| 欧美精品成人一区二区在线观看| 国产精品爽爽va在线无码观看 | 亚洲无码高清免费视频亚洲| 国产欧美日韩在线在线不卡视频| 91美女在线| 国产精品福利在线观看无码卡| 日韩第九页| 精品久久香蕉国产线看观看gif| 四虎永久在线精品国产免费| 国产精品永久免费嫩草研究院| 国产亚洲视频免费播放| 夜色爽爽影院18禁妓女影院| 久久久久久尹人网香蕉 | 拍国产真实乱人偷精品| 狠狠色婷婷丁香综合久久韩国| 97se亚洲综合不卡| 欧美在线中文字幕| 911亚洲精品| a毛片基地免费大全| 国产青青草视频| 91精品最新国内在线播放| 免费中文字幕在在线不卡| 免费高清毛片| 日本人妻丰满熟妇区| 99热这里只有免费国产精品| 国产电话自拍伊人| 国产一区在线视频观看| 国产午夜不卡| 日韩欧美中文在线| 国产网站在线看| 久久久精品国产SM调教网站| 久久香蕉欧美精品| 91精品伊人久久大香线蕉| 九九视频免费在线观看| 67194亚洲无码| 欧美精品1区| 91青青草视频在线观看的| 福利国产微拍广场一区视频在线| 日韩在线播放中文字幕| 国产99视频免费精品是看6| 成年A级毛片| 精品视频第一页| www欧美在线观看| 国产午夜无码专区喷水| 中文字幕首页系列人妻| 国产精品视频白浆免费视频| 亚洲精品无码AV电影在线播放| 国产成年无码AⅤ片在线| 亚洲精品日产AⅤ| 老司机午夜精品视频你懂的| 丝袜无码一区二区三区| 国产日韩精品欧美一区喷| 91精品国产一区| 青青操视频在线| 无套av在线| 中文字幕 欧美日韩| 色悠久久久| 精品伊人久久大香线蕉网站| 亚洲乱码视频| 亚洲精品人成网线在线 | 又污又黄又无遮挡网站| 亚洲视屏在线观看| 91精品国产福利| 福利视频久久| 欧美午夜在线播放| 久久久久88色偷偷| 不卡视频国产|