freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于qt的局域網(wǎng)跨平臺即時通信軟件畢業(yè)論文(編輯修改稿)

2025-04-03 10:16 本頁面
 

【文章內(nèi)容簡介】 供免費(fèi)下載,全部都是開放源代碼,非商業(yè)用途亦采用 GPL 的版權(quán)宣告,著名的 Open SourceKDE項(xiàng)目便是采用 Qt 開發(fā)的。 山東農(nóng)業(yè)大學(xué)學(xué)士學(xué)位論文 4 Trolltech 也針對嵌入式環(huán)境推出了 Qt/Embedded 產(chǎn)品。與桌面版本不同, Qt/Embedded 已經(jīng)直接取代了 X Server 及 X Library 等角色,將所有的功能全部整合在一起。 Qt/Embedded 同樣具有跨平臺的特點(diǎn),省掉了不少移植軟件的功夫,這樣的概念和 Java 十分接近。同時它還采用模塊化設(shè)計,其最大的好處是有彈性, Qt/Embedded 號稱最小,可以縮到 800 KB 左右,最多可以長到 3 MB( for Intel x86),這樣的彈性也讓 Qt/Embedded 更適合在嵌入式環(huán)境下生存。 Qt/Embedded 延續(xù)了 Qt 在 X 上的強(qiáng)大功能,在底層摒棄了 X lib,僅采用 FrameBuffer 作為底層圖形接口。同時,將外部輸入設(shè)備抽象為keyboard 和 mouse 輸入事件,底層接口支持鍵盤、 GPM 鼠標(biāo)、觸摸屏及用戶自定義的設(shè)備等。 Qt/Embedded 類庫完全采用 C++封裝。豐富的控件資源和較好的可移植性是 Qt/Embedded 最為優(yōu)秀的一方面。它的類庫接口完全兼容于同版本的 QtX11,使用 X 下的開發(fā)工具可以直接開發(fā)基于 Qt/Embedded 的應(yīng)用程序 QUI 界面。 與前兩種 GUI 不同的是, Qt/Embedded 的底層圖形引擎只能采用FrameBuffer,這就注定了它是針對高端 嵌入式圖形領(lǐng)域的應(yīng)用而設(shè)計的。由于該庫的代碼追求面面俱到,以增加它對多種硬件設(shè)備的支持,造成了其底層代碼比較凌亂,各種補(bǔ)丁較多的問題。 Qt/Embedded 的結(jié)構(gòu)也過于復(fù)雜和臃腫,很難進(jìn)行底層的擴(kuò)充、定制和移植,尤其是用來實(shí)現(xiàn) signal/slot 機(jī)制的 moc 文件。 Qt/Embedded 當(dāng)前已經(jīng)升級為 Qtopia Core 和 Qtopia Core,繼承了Qt4 的新技術(shù),包括:高性能渲染引擎、模板容器類及基于行為的主窗口架構(gòu),改進(jìn)的功能特點(diǎn)包括文本渲染與多線程技術(shù)。當(dāng)編譯 Qtopia Core 時,可以去除不 用的功能,以最小化軟件的占用空間。 開發(fā)技術(shù)簡介 本軟件的開發(fā)所使用的技術(shù)總的來說可以分為以下幾大類: ( 1) 用來進(jìn)行通信的部分, Tcp socket 通信 和 Qudpsocket TCP 即 Transmission Control Protocol,傳輸控制協(xié)議。與 UDP 不同,它是面向連接和數(shù)據(jù)流的可靠傳輸協(xié)議。也就是說,它能使一臺計算機(jī)上的數(shù)據(jù)無差錯的發(fā)往網(wǎng)絡(luò)上的其他計算機(jī),所以當(dāng)要傳輸大量數(shù)據(jù)時,我們選用 TCP 協(xié)議。 山東農(nóng)業(yè)大學(xué)學(xué)士學(xué)位論文 5 TCP 協(xié)議的程序使用的是客戶端 /服務(wù)器模式,在 QT 中,使用QTcpServer 類建立 服務(wù)器。我們在服務(wù)器端進(jìn)行端口的監(jiān)聽,一旦發(fā)現(xiàn)客戶端的連接請求,就會發(fā)出 newConnection()信號,我們可以關(guān)聯(lián)這個信號到我們自己的槽函數(shù),進(jìn)行相互之間套接字的建立。一旦有數(shù)據(jù)到來相應(yīng)端的套接字就會發(fā)出 readyRead()信號,我們可以關(guān)聯(lián)此信號,進(jìn)行數(shù)據(jù)的接收 。 其通信模型如圖: Qudpsocket 則是一種面向無連接的的不可靠的數(shù)據(jù)傳輸技術(shù),他 可以不用 tcp 所需的連接,所以這種協(xié)議是盡最大努力的交付數(shù)據(jù),這種協(xié)議在網(wǎng)絡(luò)環(huán)境較好的局域網(wǎng)內(nèi)應(yīng)用相當(dāng)有價值。其通信模型如圖: 山東農(nóng)業(yè)大學(xué)學(xué)士學(xué)位論文 6 ( 2) 信號和槽 是 Qt 編程的一個重要部分。 這個機(jī)制可以在對象之間彼此并不了解的情況下將它們的行為聯(lián)系起來。在前幾個例程中,我們已經(jīng)連接了信號和槽,聲明了控件自己的信號和槽,并實(shí)現(xiàn)了槽函數(shù),發(fā)送了信號。 槽和普通的 c++成員函數(shù)很像。它們可以是虛函數(shù)( virtual),也可被重載( overload),可以是公有的( public),保護(hù)的( protective),也可是私有的( private),它們可以象任何 c++成員函數(shù)一樣被調(diào)用,可以傳遞任何類型的參數(shù)。不同在于一個槽函數(shù)能和一個信號相連接,只要信號發(fā)出了,這個槽函數(shù)就會 自動被調(diào)用。 connect 函數(shù)語法如下: connect(sender, SIGNAL(signal), receiver, SLOT(slot))。 sender 和 receiver 是 QObject 對象指針, signal 和 slot 是不帶參數(shù)山東農(nóng)業(yè)大學(xué)學(xué)士學(xué)位論文 7 的函數(shù)原型。 SIGNALE()和 SLOT()宏的作用是把他們轉(zhuǎn)換成字符串。 在目前有的例子中,我們已經(jīng)連接了不同的信號和槽。實(shí)際使用中還要考慮 入戲一些規(guī)則: (一) 一個信號可以連接到多個槽: connect(slider,SIGNAL(valueChanged(int)),spinBox, SLOT(setValue(int)))。 connect(slider,SIGNAL(valueChanged(int)),this, SLOT(updateStatusBarIndicator(int)))。 當(dāng)信號發(fā)出后,槽函數(shù)都會被調(diào)用,但是調(diào)用的順序是隨機(jī)的,不確定的。 (二) 多個信號可以連接到一個槽 connect(lcd,SIGNAL(overflow()),this,SLOT(handleMathError()))。 connect(calculator,SIGNAL( divisionByZero()),this,SLOT(handleMathError()))。 任何一個信號發(fā)出,槽函數(shù)都會執(zhí)行。 (三) 一個信號可以和另一個信號相連 connect(lineEdit, SIGNAL(textChanged(const QString amp。)),this, SIGNAL(updateRecord(const QString amp。))); 第一個信號發(fā)出后,第二個信號也同時發(fā)送。除此之外,信號與信號連接上和信號和槽連接相同。 (四) 連接可以被刪除 disconnect(lcd,SIGNAL(overflow()),this,SLOT(handleMathError()))。 這個函數(shù)很少使用,一個對象刪除后, Qt 自動刪除這個對象的所有連接。 信號和槽函數(shù)必須有著相同的參數(shù)類型,這樣信號和槽函數(shù)才能成功連接: connect(ftp,SIGNAL(rawCommandReply(int,constQStringamp。)),this, SLOT(processReply(int, const QString amp。)))。 如果信號里的參數(shù)個數(shù)多于槽函數(shù)的參數(shù),多余的參數(shù)被忽略: connect(ftp,SIGNAL(rawCommandReply(int, const QStringamp。)),this,SLOT(checkErrorCode(int)))。 如果參速類型不匹配,或者信號和槽不存在,在 debug 狀態(tài)時,Qt 會在運(yùn)行期間給出警告。如果信號和槽連接時包含了參數(shù)的名字, Qt 將會給出警告。 山東農(nóng)業(yè)大學(xué)學(xué)士學(xué)位論文 8 以前我們列舉的例子中都是控件的信號和槽。但是信號和槽機(jī)制在 QObject 中就實(shí)現(xiàn)了,可以實(shí)現(xiàn)在任何從 QObject 繼承的子類中。 ( 3)用于采集攝像頭數(shù)據(jù)的 V4l2 驅(qū)動 API 以及圖像壓縮技術(shù) V4L(Video for Linux )是 Linux 內(nèi)核中關(guān)于視頻設(shè)備的子系統(tǒng),它為linux 下的視頻驅(qū)動提供了統(tǒng)一的接口,使得應(yīng)用程序可以使用統(tǒng)一的API 函數(shù)操作不同的視頻設(shè)備,極大地簡化了視頻系統(tǒng)的開發(fā)和維護(hù)。 由于 V4L 有很多缺陷, Bill Dirks 等人對其進(jìn)行了重新設(shè)計,并取名為Video for LinuxTwo(V4L2),最早出現(xiàn)于 版本。 V4L2 相比于V4L 有更好的擴(kuò)展性和靈活性,并且支持的硬件設(shè)備更多。但是需要注意的是, V4L2 對 V4L 進(jìn)行了徹底的改造 ,因而兩者并不兼容。 Linux 系統(tǒng)中,所有的外部設(shè)備都被看成一種特殊的文件,稱之為設(shè)備文件。應(yīng)用程序可以通過訪問這些特殊文件實(shí)現(xiàn)對應(yīng)設(shè)備的控制。V4L2 視頻設(shè)備的設(shè)備文件為 /dev 目錄下的 videoN(N 為 0~63)文件,其主設(shè)備號為 81,次設(shè)備號為 N(N 為 0~63)。 在 v4l2 中有主要的技術(shù)參數(shù)如下: VIDIOC_REQBUFS:分配內(nèi)存 VIDIOC_QUERYBUF:把 VIDIOC_REQBUFS 中分配的數(shù)據(jù)緩存 換成物理地址 VIDIOC_QUERYCAP:查詢驅(qū)動功能 VIDIOC_ENUM_FMT:獲取當(dāng)前驅(qū)動支持的視頻格式 VIDIOC_S_FMT:設(shè)置當(dāng)前驅(qū)動的頻捕獲格式 VIDIOC_G_FMT:讀取當(dāng)前驅(qū)動的頻捕獲格式 VIDIOC_TRY_FMT:驗(yàn)證當(dāng)前驅(qū)動的顯示格式 VIDIOC_CROPCAP:查詢驅(qū)動的修剪能力 VIDIOC_S_CROP:設(shè)置視頻信號的邊框 VIDIOC_G_CROP:讀取視頻信號的邊框 VIDIOC_QBUF:把數(shù)據(jù)從緩存中讀取出來 VIDIOC_DQBUF:把數(shù)據(jù)放回緩存隊列 VIDIOC_STREAMON:開始視頻顯示函數(shù) VIDIOC_STREAMOFF:結(jié)束視頻顯示函數(shù) VIDIOC_QUERYSTD:檢查當(dāng)前視頻設(shè)備支持的標(biāo)準(zhǔn),例如 PA L 或 NTSC(有些是必須的有些是可選擇的)。 結(jié)構(gòu)體: struct v4l2_requestbuffers reqbufs。//向驅(qū)動申請幀緩沖的請求,里 包含申請的個數(shù) 山東農(nóng)業(yè)大學(xué)學(xué)士學(xué)位論文 9 struct v4l2_capability cap。//這個設(shè)備的功能,比如是否是視頻輸入 備 struct v4l2_input input。 //視頻輸入 struct v4l2_standard std。//視頻的制式,比如 PAL, NTSC struct v4l2_format fmt。//幀的格式,比如寬度,高度等 struct v4l2_buffer buf。//代表驅(qū)動中的一幀 v4l2_std_id stdid。//視頻制式,例如: V4L2_STD_PAL_B struct v4l2_queryctrl query。//查詢的控制 struct v4l2_control control。//具體控制的值 ( 4) 用于控制與多人視頻的 thread 和 Qthread 多線程技術(shù) 多線程技術(shù)對于我們來說不應(yīng)該 陌生,這種技術(shù)不僅節(jié)約存儲空間,提高程序的運(yùn)行效率。并且可以實(shí)現(xiàn)很多實(shí)用的功能。 ( 5)用于控制界面顯示的 QtGui 庫內(nèi)容 QtGui 是一個非常強(qiáng)大的編程庫同時它也是 QT 中所有類的父類,它為用戶提供了豐富的 API 和各種實(shí)例,這些在前面開發(fā)工具基本已經(jīng)介紹,此處不再贅述。 山東農(nóng)業(yè)大學(xué)學(xué)士學(xué)位論文 10 3 需求分析 功能需求分析 群 聊功能 局域網(wǎng)內(nèi)所有用戶都可在聊天室內(nèi)發(fā)送消息,并且接收其他用戶發(fā)往聊天室的消息,理論上用戶可以看到程序運(yùn)行后所有發(fā)往聊天室的消息。 私聊功能 一個完整的聊天軟件定然是 缺少不了私聊功能的,軟件還提供私聊功能用戶雙擊用戶列表上響應(yīng)的用戶后即可打開與之對應(yīng)的聊天窗口并且可以與之進(jìn)行任意的聊天。當(dāng)然用戶可以同時與多人進(jìn)行私聊而不會發(fā)生干擾。 聊天字體設(shè)置 為了使用戶的文字更加的生動和個性化,用戶可以通過面板上的各種控件來修改文字、大小和顏色。發(fā)送到對方的聊天窗口時這些文字依然要按照發(fā)送者的設(shè)置顯示。 聊天記錄功能 軟件會自動的記錄用戶的所有聊天內(nèi)容并保存在本地的文件中,包括群聊和私聊內(nèi)容。當(dāng)用戶點(diǎn)擊聊天記錄按鈕時還可以將對應(yīng)的聊天記錄顯示在擴(kuò)展出來的聊天 記錄顯示框內(nèi)。而且比較重要的一點(diǎn)是,在保存聊天記錄是時候會將文字的格式一并保存,并且可以按照原來的格式顯示。用戶還可以主動的將信息顯示窗口內(nèi)的內(nèi)容自行的保存到自己想要保存的文件中去。 文件傳送功能 當(dāng)用戶需要傳送文件時只需要點(diǎn)擊與之對應(yīng)的聊天框,或者選擇群聊天室用戶列表對應(yīng)的用戶后,點(diǎn)擊文件傳送按鈕即可選擇文件然后進(jìn)行高效的文件傳輸了,高效簡便。 維護(hù)在線用戶列表 在線用戶列表只顯示局域網(wǎng)內(nèi)已經(jīng)運(yùn)行軟件的用戶的信息。其他的則不做顯示,當(dāng)有用戶加入時,用戶列表就自動的在底一行加入新來的用戶信息,其他用戶的信息一次后移。當(dāng)有用戶退出時列表將其信息刪山東農(nóng)業(yè)大學(xué)學(xué)士學(xué)位論文 11 除,然后后邊的用戶一次向前移動一行。 修改昵稱 軟件允許用戶修改自己的顯示名稱。程序運(yùn)行最初時,列表上顯示的是用戶的系統(tǒng)用戶名。用戶可點(diǎn)擊,自己的名稱進(jìn)行編輯修改。修改完后向全網(wǎng)實(shí)時更新。名稱的修改可以保存下次運(yùn)行時就顯示本次修改后的名稱。 以上功能都是可以跨平臺實(shí)現(xiàn)的也就是說同樣的代碼可以在多種操作系統(tǒng)上編譯生成可執(zhí)行程序,然后發(fā)布運(yùn)行。也就是說同一款軟件可以跨平臺進(jìn)行信息交流和文件傳輸。 視頻通話
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1