国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Linux聊天系統(tǒng)的設(shè)計與實現(xiàn)

2017-12-21 17:42王維陳偉聶維

王維++陳偉++聶維

摘要:本文基于Linux系統(tǒng),使用socket技術(shù)和TCP協(xié)議編程實現(xiàn)了聊天系統(tǒng)。該系統(tǒng)由服務(wù)器與客戶端組成,數(shù)據(jù)庫選用MySQL,其中服務(wù)器使用Linux的C語言編寫,客戶端使用Linux的QT編寫。該系統(tǒng)可以支持多用戶在線聊天,能夠?qū)崿F(xiàn)截圖、文件發(fā)送等復(fù)雜功能。

關(guān)鍵詞:Linux;TCP;socket;聊天系統(tǒng)

中圖分類號:TP316.81 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2017)10-0154-02

近幾年隨著信息的高速發(fā)展,人們越來越傾向于借助網(wǎng)絡(luò)通過聊天工具進(jìn)行交流。當(dāng)前聊天系統(tǒng)的開發(fā)技術(shù)越來越成熟,大多數(shù)聊天系統(tǒng)使用的協(xié)議是TCP/IP協(xié)議和UDP/IP協(xié)議[1],并且大多基于Windows平臺。本文主要研究基于Linux操作系統(tǒng)的socket通信技術(shù)的聊天系統(tǒng)。

1 聊天系統(tǒng)的設(shè)計與實現(xiàn)

本系統(tǒng)采用C/S架構(gòu),使用ububtu14.04 操作系統(tǒng),基于TCP協(xié)議[2],使用MySQL14.14數(shù)據(jù)庫存儲用戶的相關(guān)信息、聊天記錄等。其中客戶端主要完成用戶的登錄、注冊、信息管理、聊天等功能,使用跨平臺的C++圖形用戶界面應(yīng)用程序框架QT實現(xiàn)[3];服務(wù)器端主要完成服務(wù)器端的初始化及監(jiān)聽、消息的存儲和轉(zhuǎn)發(fā)、系統(tǒng)消息的發(fā)送和信息管理等功能,使用Linux下的C語言實現(xiàn)[4],其總體功能模塊圖如圖1所示。以下部分對部分模塊的實現(xiàn)進(jìn)行介紹。

1.1 截圖模塊

該模塊實現(xiàn)截圖區(qū)域任意大小的選擇,同時調(diào)整選擇區(qū)域及對選定區(qū)域的重選及保存,具體算法如:(1)調(diào)用updateMoveControlMouseShape(controlValue)函數(shù)改變8個控制點的鼠標(biāo)狀態(tài),以順時針方向編號完成坐標(biāo)的初始化并顯示。(2)選取區(qū)域的高度和寬度,調(diào)用QPixmap::grabWindow()抓取當(dāng)前屏幕圖片,將當(dāng)前狀態(tài)beginControl設(shè)置為finishControl,確定選定區(qū)域后發(fā)送finishPixmap信號。

1.2 文件發(fā)送模塊

文件發(fā)送借助Linux文件系統(tǒng)相關(guān)的系統(tǒng)調(diào)用實現(xiàn)。文件發(fā)送分為發(fā)送方和接收方。首先介紹發(fā)送方:(1)檢測發(fā)送方是否在線,并返回提示信息。(2)使用open()函數(shù)打開文件,同時設(shè)置打開方式為只讀。(3)設(shè)定每次只發(fā)送1K(1024字節(jié))大小的文件,先發(fā)送文件頭,再發(fā)送文件體,同時增加延時處理避免粘包,同時提示用戶文件是否發(fā)送成功。

接收方:(1)如果接收文件頭,以“wb”方式創(chuàng)建文件;如果接收文件體,以“ab”方式打開文件;(2)使用函數(shù)write((char *)msg->body,1,rc-4,fp),將接收的文件寫入已經(jīng)打開的文件,使用函數(shù)flush(fp)刷新緩沖區(qū);(3)檢測是否接收成功:即接收的總字節(jié)數(shù)與被打開的文件字節(jié)數(shù)是否相等。

2 測試

經(jīng)過測試,該聊天系統(tǒng)能夠正常運行,其中局部截圖、文件發(fā)送分別如圖2、圖3所示。

3 結(jié)語

本文基于Linux操作系統(tǒng),使用TCP的socket編程實現(xiàn)了聊天系統(tǒng)。該系統(tǒng)使用QT開發(fā)了客戶端,使用C語言開發(fā)了服務(wù)器端,同時使用MySQL數(shù)據(jù)庫存儲用戶的相關(guān)信息,極大的方便了用戶之間的交流。在下一步的工作中,我們將嘗試將該聊天系統(tǒng)移植到ARM平臺。

參考文獻(xiàn)

[1]曾宏安,馮利美.嵌入式應(yīng)用程序設(shè)計綜合教程[M].北京:人民郵電出版社,2014.

[2]李淑梅,王志彬.Socket在局域網(wǎng)聊天系統(tǒng)中的應(yīng)用[J].吉林師范大學(xué)學(xué)報:自然科學(xué)版,2014,(1):71-73.

[3]陳爽.Linux與Qt程序設(shè)計[M].北京:清華大學(xué)出版社,2011.

[4]賈明,嚴(yán)世賢.Linux下的C編程[M].北京:人民郵電出版社,2001.endprint