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

正文內(nèi)容

基于qt的局域網(wǎng)聊天系統(tǒng)設(shè)計(jì)論文-文庫(kù)吧在線文庫(kù)

  

【正文】 QT 的宏 SIGNAL(),當(dāng)指定槽函數(shù)時(shí)必須使用宏 SLOT()。 moc 并不擴(kuò)展 include 或者 define 宏定義 , 它只是簡(jiǎn)單的跳過(guò)所遇到的任何預(yù)處理指令。 3 .如果一個(gè)信號(hào)與多個(gè)槽相聯(lián)系的話,那么,當(dāng)這個(gè)信號(hào)被發(fā)射時(shí),與之相關(guān)的槽被激活的順序?qū)⑹请S機(jī)的。 13 4 系統(tǒng)設(shè)計(jì) 系統(tǒng)總體構(gòu)架 本系統(tǒng)采用 c/s 構(gòu)架并以 Qt 技術(shù)為基礎(chǔ),實(shí)現(xiàn)局域網(wǎng)的聊天系統(tǒng)。用戶信息欄包括用戶名,主機(jī)名和用戶 ID。 3. 拆分字符串 QString str = Arial, Helvetica, Times, Courier 。 QStringList result。 QTableWidgetItem *host = new QTableWidgetItem(localHostName)。 uitextBrowserappend(tr(%1 在線! ).arg(userName))。=39。 } //處理用戶離開(kāi) void Widget::participantLeft(QString userName,QString localHostName,QString time) { int rowNum = uitableWidgetfindItems(localHostName, Qt::MatchExactly).first()row()。format) {//當(dāng)編輯器的字體格式改變時(shí),我們讓部件狀態(tài)也隨之改變 uifontComboBoxsetCurrentFont(())。 uitextEditsetFocus()。 uitextEditsetFocus()。 if(!()) saveFile(fileName)。 int socket (int family, int type, int protocol)。 uitextEditclear()。 UDP消息接收: while(udpSockethasPendingDatagrams()) { QByteArray datagram。 QString time = QDateTime::currentDateTime().toString(yyyyMMdd hh:mm:ss)。與 UDP 不同,它是面向連接和數(shù)據(jù)流的可靠傳輸協(xié)議。連接建立后得到文件的基本信息,進(jìn)行自動(dòng)初始化并分配臨時(shí)空間。 localFile = new QFile(fileName)。 //開(kāi)始計(jì)時(shí) QString currentFile = (() (39。 qDebug()currentFileTotalBytes。 在客戶端,構(gòu)造函數(shù)中首先 也要設(shè)置端口 6666,然后 關(guān)聯(lián)了 tcpSocket的兩個(gè)信號(hào),當(dāng)有數(shù)據(jù)到來(lái)時(shí)發(fā)出 readyRead()信號(hào),我們執(zhí)行讀取數(shù)據(jù)的 readMessage()函數(shù)。 tcpClientconnectToHost(hostAddress,tcpPort)。 bytesReceived += sizeof(qint64)*2。 } } if(bytesReceived TotalBytes){ bytesReceived += tcpClientbytesAvailable()。 uitcpClientStatusLabelsetText(tr(已接收 %1MB (%2MB/s) \n 共 %3MB 已用時(shí) :%4 秒 \n 估計(jì)剩余時(shí)間 : %5 秒 ) .arg(bytesReceived / (1024*1024))//已接收 .arg(speed*1000/(1024*1024),0,39。 uitcpClientStatusLabelsetText(tr(接收文件 %1 完畢 ).arg(fileName))。而 makefile 文件需要按照某種語(yǔ)法進(jìn)行編寫(xiě),文件中需要說(shuō)明如何編譯各個(gè)源文件并連接生成可執(zhí)行文件,并要求定義源文件之間的依賴關(guān)系 。 圖 10傳輸完成 小結(jié) 經(jīng)過(guò)測(cè)試,該系統(tǒng)可以很好的完成聊天及傳輸簡(jiǎn)單文件的功能。要做一個(gè)項(xiàng)目,要先對(duì)項(xiàng)目的程序有大體上的想法思路,有個(gè)流程框架,然后利用代碼功能實(shí)現(xiàn)你的想法,在寫(xiě)代碼過(guò)程中遇到具體問(wèn)題時(shí)邊寫(xiě)邊修正思路,完善思路。知識(shí)只有在不斷地運(yùn)用中才能牢固地掌握。老師嚴(yán)謹(jǐn)耐心的指導(dǎo)讓我終身難忘,在此向老師表示誠(chéng)摯的敬意和由衷的感謝。 32 致 謝 彈指一揮間,我已經(jīng)在鄭州大學(xué)西亞斯國(guó)際學(xué)院度過(guò)了一生中最為寶貴且難忘的四年時(shí)間。整個(gè)項(xiàng)目做了十多天,每每遇到不熟悉的知識(shí)點(diǎn)時(shí) 就要查看講義,還不懂就請(qǐng)教同學(xué),項(xiàng)目的完成離不開(kāi)同學(xué)的幫助,所以我也非常感謝在不辭勞苦、不厭其煩給我講解的同學(xué)。 31 結(jié) 束 語(yǔ) 在剛開(kāi)始要做這個(gè)實(shí)訓(xùn)的時(shí)候,發(fā)現(xiàn)對(duì) Qt 的知識(shí)掌握的并不多,對(duì)于從何下手感到迷茫。 在服務(wù)器端,開(kāi)啟新的窗 口,供用戶選擇所要傳輸?shù)奈募窂?,選擇成功后,會(huì)提示發(fā)送。 29 編譯 Qt creator 擁有自己的 g++編譯器,只需要在最開(kāi)始的時(shí)候建立 Qt項(xiàng)目工程,然后就可以進(jìn)行編譯。,0)//用時(shí) .arg(TotalBytes/speed/1000 useTime/1000,0,39。 } uiprogressBarsetMaximum(TotalBytes)。 bytesReceived +=fileNameSize。//設(shè)置數(shù)據(jù)流版本,要和服務(wù)器端相同 float useTime = ()。 connect(tcpClient,SIGNAL(readyRead()),this,SLOT(readMessage()))。在 block 的開(kāi)始添加了一個(gè) quint16 大小的空間,也就是兩字節(jié)的空間,它用于后面放置文件的大小信息。 TotalBytes += ()。 QDataStream sendOut(amp。其代碼如下所示: void TcpServer::sendMessage() //開(kāi)始發(fā)送數(shù)據(jù) { uiserverSendBtnsetEnabled(false)。而在客戶端,一旦有數(shù)據(jù)到來(lái)就會(huì)發(fā)出 接受 信號(hào),我們可以關(guān)聯(lián)此信號(hào),進(jìn)行數(shù)據(jù)的接收。 uitextBrowserappend([ +userName+ ] + time)。datagram,QIODevice::ReadOnly)。 return。 TCP 服 務(wù)器調(diào)用 accept,從已完成連接隊(duì)列頭返回下一個(gè)已完成連接,若已完成隊(duì)列為空,則進(jìn)程睡眠。 地址轉(zhuǎn)換函數(shù): int i_aton (const char *strptr, struct in_addr *addrptr)。 uitextEditsetFocus()。 } } //文字粗體設(shè)置: void Widget::on_textbold_clicked(bool checked) { if(checked) uitextEditsetFontWeight(QFont::Bold)。 uitextitalicsetChecked(().italic())。 uitextBrowserappend(tr(%1 于 %2 離開(kāi)! ).arg(userName).arg(time))。 } } } return false。 envVariables USERNAME.* USER.* USERDOMAIN.* HOSTNAME.* DOMAINNAME.*。 uitableWidgetsetItem(0,1,host)。 Qprocess::systemenvironment() 返回當(dāng)前進(jìn)程的環(huán)境列表,即一個(gè)詳細(xì)的路徑,因此可以獲得用戶名。 5. 替換 replaceInStrings() QStringList files。 窗口如下圖 5所示: 15 圖 5服務(wù)器端發(fā)送文件 客戶端作為文件的接受端,其窗口與服務(wù)器端相差無(wú)幾,主要由取消,關(guān)閉按鈕及等待 進(jìn)度構(gòu)成,具體窗口如下圖 6所示: 圖 6客戶端接收文件 16 5 設(shè)計(jì)實(shí)現(xiàn) 獲取用戶信息 QStringList 類提供了一個(gè)字符串列表從 QList QString繼承而來(lái),它提供快速索引為基礎(chǔ)的接入以及快速插入和清除 。 Qt 提供了 QTcpSocket 類,QTcpServer 類和 QUdpSocket 類等供開(kāi)發(fā)人員使用。 7. 信號(hào)與槽不能有缺省參數(shù)。但如果我們要追求高效率的話,比如在實(shí)時(shí)系統(tǒng)中就要盡可能的少用這種機(jī)制。 moc 讀 C++ 源文件,如果發(fā)現(xiàn)有 Q_OBJECT 宏聲明的類,它就會(huì)生成另外一個(gè) C++ 源文件,這個(gè)新生成的文件中包含有該類的元對(duì)象代碼。 private slots:在這個(gè)區(qū)內(nèi)聲明的槽意味著只有類自己可以將信號(hào)與之相連接。槽可以有參數(shù),但槽的參數(shù)不能有缺省值。只有當(dāng)所有的槽 返回以后發(fā)射函數(shù)( emit)才返回。一個(gè)槽并不知道是否有任何信號(hào)與自己相連接。信號(hào)與槽是 Qt 自行定義的一種通信機(jī)制,它獨(dú)立于標(biāo)準(zhǔn)的 C/C++ 語(yǔ)言,因此要正確的處理信號(hào)與槽,必須借助一個(gè)稱為 moc( Meta Object Compiler) 的 Qt 工具,該工具是一個(gè) C++ 預(yù)處理程序,它為高層次的事件處理自動(dòng)生成所需要的附加代碼。新進(jìn)程處理此客戶請(qǐng)求,并不需要對(duì)其他請(qǐng)求做出應(yīng)答。 C/S架構(gòu) 8 C/S 結(jié)構(gòu)( Client/Server 結(jié)構(gòu))是大家熟知的客戶機(jī)和服務(wù)器結(jié)構(gòu)。 UDP 協(xié)議基本上是 IP 協(xié)議與上層協(xié)議的接口。另外在傳輸?shù)倪^(guò)程中 , 如果接收到無(wú)序、丟失以及被破壞的數(shù)據(jù)包 , TCP 還可以負(fù)責(zé)恢復(fù)可見(jiàn) TCP是一種可靠的 , 面向連接 , 面向數(shù)據(jù)流的傳輸協(xié)議。如果你已經(jīng)對(duì)安裝目錄具有寫(xiě)操作權(quán)限的話,那么只需輸入以下命令即可: make install 6 第 6 步:設(shè)置環(huán)境變量 如果使用的 shell 是 bash、 ksh、 zsh 或者 sh,那么請(qǐng)把以下兩行代碼添加到 .Profile中: PATH=/usr/local/Trolltech/:$PATH export PATH 如果使用的 shell 是 csh 或者 tcsh,請(qǐng)把下面一行代碼添加到 .login 文件中: setenv PATH /usr/local/Trolltech/:$PATH 如果使用了 configure 的 prefix 選項(xiàng),那么請(qǐng)使用你自己指定的路徑來(lái)代替這里給出的默認(rèn)路徑。 如果 configure 失敗,可以以使用 v 選項(xiàng)查看具體的原因,命令是 ./configure v 如果以后需要在這次配置的基礎(chǔ)上更改選項(xiàng),先要運(yùn)行 make confclean 命令以清除之前的配置。 平臺(tái)搭建 從 qt 的網(wǎng)站中下載文件 。 Qtopia 贏得了 2020 和 2020 年 LinuxWorld 的 “ 最佳嵌入式 Linux 解決方案 ” 大獎(jiǎng), Qtopia Phone 也在 2020 年贏得了相同的榮譽(yù)。六天后,這一發(fā)布在 被宣布。就是在那個(gè)夏季的一天, Haavard 和 Eirik 外出享受夏日的陽(yáng)光,當(dāng)他們?cè)诠珗@的一個(gè)長(zhǎng)椅上坐定之后, Haavard 說(shuō) “ 我們需要一個(gè)面向?qū)ο蟮娘@示系統(tǒng) ” 。此 IDE 能夠跨平臺(tái)運(yùn)行,支持的系統(tǒng)包括 Linux( 32 位及 64 位)、 Mac OS X 以及 Windows。 3. 能夠采集聊天室內(nèi)成員的信息,并顯示成員 IP,成員名和所屬組。出于高效、快速地處理各種事務(wù)的目的,越來(lái)越多的企業(yè) 和單位 在其內(nèi)部使用局域網(wǎng)來(lái)進(jìn)行工作 和交流 。 國(guó)內(nèi)外研究的現(xiàn)狀 目前,國(guó)內(nèi)外企業(yè)對(duì)局域網(wǎng)的文件傳輸系統(tǒng)認(rèn)識(shí)和使用情況并不好,各個(gè)企業(yè)單位在局域網(wǎng)內(nèi)實(shí)現(xiàn)聊天,文件傳輸及資源共享還有很大的缺陷。 關(guān)鍵詞 : Qt, TCP/IP 通信, UDP 通信 II Design of
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1