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

?

基于QT的網(wǎng)絡(luò)聊天系統(tǒng)設(shè)計

2015-04-30 06:34趙茁琳陳恒如韓利凱
軟件導(dǎo)刊 2015年4期
關(guān)鍵詞:嵌入式系統(tǒng)

趙茁琳 陳恒如 韓利凱

摘要摘要:根據(jù)嵌入式應(yīng)用特點(diǎn)對嵌入式終端下的網(wǎng)絡(luò)聊天系統(tǒng)進(jìn)行設(shè)計,實(shí)現(xiàn)了實(shí)時通信和文檔共享,具有數(shù)據(jù)通訊不需要建立服務(wù)器、直接在兩臺電腦間進(jìn)行通信和數(shù)據(jù)傳輸、支持文件及文件目錄傳輸、安全快捷等特點(diǎn)。

關(guān)鍵詞關(guān)鍵詞:QT;Linux;嵌入式系統(tǒng);網(wǎng)絡(luò)聊天系統(tǒng)

DOIDOI:10.11907/rjdk.1431092

中圖分類號:TP319

文獻(xiàn)標(biāo)識碼:A文章編號文章編號:16727800(2015)004011402

0引言

QT是諾基亞公司開發(fā)的一個跨平臺應(yīng)用程序框架,使用QT編寫的軟件可以移置到任意操作系統(tǒng)上編譯與運(yùn)行,而不需要修改源代碼,軟件會自動依據(jù)使用平臺的不同,而呈現(xiàn)出平臺原有的圖形界面風(fēng)格。QT是一個跨平臺的C++ GUI應(yīng)用構(gòu)架,它提供了豐富多彩的窗口部件集,具有易于擴(kuò)展、面向?qū)ο?、基于組件編程等特點(diǎn)。并且,目前Linux上最流行的KDE桌面環(huán)境就是建立在QT庫的基礎(chǔ)上。因此,利用Linux進(jìn)行基于QT的嵌入式聊天系統(tǒng)設(shè)計與開發(fā)具有一定的應(yīng)用價值。

1系統(tǒng)組成架構(gòu)

系統(tǒng)主要由文字聊天模塊和文件傳輸模塊組成。

1.1文字聊天模塊

系統(tǒng)采用C/S架構(gòu),客戶端也同時作為服務(wù)器端。系統(tǒng)發(fā)送信息給局域網(wǎng)用戶時,如圖1所示,由單播模塊和廣播模塊來實(shí)現(xiàn),信息接受則由信息接收和信息查看兩個模塊完成。

1.2文件傳輸模塊

系統(tǒng)傳送文件使用TCP協(xié)議,端口為2425,如圖2所示,文件傳輸前有個“3次握手”過程,通過“3次握手”從而建立起一個TCP連接,實(shí)現(xiàn)文件、文件夾傳輸,最后關(guān)閉套接字連接。

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

2.1系統(tǒng)用戶列表建立

通過使用UDP協(xié)議,在系統(tǒng)啟動時向255.255.255.255廣播地址發(fā)送廣播包,廣播包默認(rèn)端口是2425,廣播包內(nèi)容包含工作組、用戶名、IP地址、主機(jī)名等信息。已經(jīng)啟動的用戶通過端口2425接收到此廣播包后,就會在自己的用戶列表中添加該用戶的工作組、用戶名、IP地址、主機(jī)名等信息,同時向?qū)Ψ絀P地址發(fā)送本機(jī)用戶的個人信息,從而使雙方建立起用戶列表。當(dāng)刷新用戶列表時發(fā)送的廣播包和啟動時相似,只是返回的標(biāo)識信息和啟動時略有不同,可以使用Wireshark抓包工具,監(jiān)控端口2425的數(shù)據(jù),就能截獲聊天和刷新時的信息[1]

2.2系統(tǒng)聊天信息傳送

系統(tǒng)聊天信息傳送使用UDP協(xié)議,由于UDP協(xié)議提供的是無連接服務(wù),所以傳輸速度快,但是由于沒有確認(rèn)機(jī)制,因而提供的是不可靠的服務(wù),需要自己定義返回信息的標(biāo)志來判斷對方是否接收到信息。

使用IPMSG_SENDMSG命令發(fā)送消息,消息內(nèi)容添加在附加信息中。在接收消息時,如果對方要求回信確認(rèn),則需發(fā)送IPMSG_RECVMSG命令并將對方發(fā)送的數(shù)據(jù)包的編號放在附加信息中一同發(fā)送至發(fā)送消息方。發(fā)送廣播消息需要使用IPMSG_BOADCASTOPT標(biāo)志和IPMSG_SENDMSG命令[2]。

自動發(fā)送包(缺席通知)還需要加上IPMSG_AUTORETOPT標(biāo)志以得到請求-應(yīng)答保護(hù),如果沒有任何一個包應(yīng)答,則確認(rèn)自動發(fā)送包沒有返回。

2.3文件傳輸

文件傳輸使用帶有IPMSG_FILEATTACHOPT位的IPMSG_SENDMSG命令進(jìn)行傳輸,文件屬性及內(nèi)容添加在附加信息中。當(dāng)接收端開始接收文件時,接收端將請求傳輸文件命令I(lǐng)PMSG_GETFILEDATA發(fā)送到發(fā)送端的TCP端口,并將發(fā)送端發(fā)送的包編號:文件序號:偏移量寫到附加信息區(qū)一同發(fā)送,文件發(fā)送端接收到該請求信息后進(jìn)行校驗(yàn),如果正確即可向接收端發(fā)送文件[3]。

當(dāng)接收端接收到目錄文件時,將發(fā)送附加信息區(qū)為發(fā)送端發(fā)送的包進(jìn)行編號:文件序號:偏移量(全為十六進(jìn)制格式),用IPMSG_GETDIRFILES命令請求傳輸目錄文件,而發(fā)送端則將頭信息長度:文件名:文件大?。何募傩裕何募?nèi)容添加到附加信息區(qū),頭信息長度是從頭信息長度開始到文件內(nèi)容前的‘:分割符為止的字符個數(shù)。當(dāng)文件屬性為IPMSG_FILE_DIR時,系統(tǒng)能夠自動識別其為目錄,下一個文件的數(shù)據(jù)在該目錄之后,若文件屬性為IPMSG_FILE_RETPARENT,系統(tǒng)識別其動作為返回上一級目錄,在這種情況下,文件名為‘.,其屬性為當(dāng)前目錄的值[4]。

2.4用戶離線

當(dāng)用戶離線時,可以發(fā)送一個離線廣播包到255.255.255.255,收到此廣播包的用戶,根據(jù)包中的IP地址

(也可能是包含硬件標(biāo)識,比如網(wǎng)卡地址或者多種判斷標(biāo)

志等)刪除對方的用戶列表信息。

3系統(tǒng)測試

將兩臺或者兩臺以上主機(jī)組成一個局域網(wǎng),運(yùn)行該系統(tǒng),在登陸界面中輸入用戶名和組名,如圖3所示,好友列表會顯示所有在線用戶。雙擊想要聊天的用戶頭像,就會打開聊天窗口,在文字輸入框內(nèi)輸入文字,點(diǎn)“Send”按鈕或者按Ctrl+Enter鍵就可以給對方發(fā)送消息。

4結(jié)語

該系統(tǒng)根據(jù)嵌入式應(yīng)用的特點(diǎn),對嵌入式終端下的網(wǎng)絡(luò)聊天系統(tǒng)進(jìn)行了設(shè)計,實(shí)現(xiàn)了實(shí)時通信和文檔共享。進(jìn)行數(shù)據(jù)通訊時,不需要建立服務(wù)器,可直接在兩臺電腦間實(shí)現(xiàn)通信和數(shù)據(jù)傳輸,安全且快捷。

參考文獻(xiàn)參考文獻(xiàn):

[1]STANLEY B,LIPPMAN BARBARA E. C++ Primer (4rd Editio)[M].李師賢,愛軍,梅曉勇,譯.北京:人民郵電出版,2010.

[2]SCOTT MEYERS.Effective C++[M].潘愛民,侯捷,譯.北京:電子工業(yè)出版社,2010.

[3]王和平.Qt從入門到精通[EB/OL ].http://www.fghyu.com.

[4]網(wǎng)絡(luò)協(xié)議解析手記[EB/OL].http://www.wlxysj.com.

責(zé)任編輯(責(zé)任編輯:孫娟)

猜你喜歡
嵌入式系統(tǒng)
辦公自動化系統(tǒng)的設(shè)計
嵌入式系統(tǒng)課程“中斷、異常與事件”教學(xué)實(shí)踐及啟示
面向?qū)嵺`創(chuàng)新人才培養(yǎng)的嵌入式系統(tǒng)教學(xué)研究
广水市| 武功县| 沛县| 和林格尔县| 安丘市| 高阳县| 南宁市| 高雄县| 星子县| 化德县| 南漳县| 西安市| 萝北县| 闽侯县| 吉首市| 基隆市| 左云县| 扬中市| 滁州市| 峡江县| 福清市| 兰西县| 佛学| 汉源县| 武陟县| 五大连池市| 靖安县| 五常市| 克拉玛依市| 西乌珠穆沁旗| 同江市| 莎车县| 永仁县| 鸡西市| 团风县| 温泉县| 临江市| 德清县| 太仆寺旗| 尚义县| 东丰县|