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

正文內(nèi)容

基于qt的局域網(wǎng)聊天系統(tǒng)設(shè)計(jì)論文(專(zhuān)業(yè)版)

  

【正文】 但是個(gè)人地學(xué)習(xí)能力不同,有些人獨(dú)立地完成一個(gè)會(huì)比較吃力,那么幾 個(gè)人組成一個(gè)小組做項(xiàng)目就是相互促進(jìn)、共同進(jìn)步地效果。但在 很多細(xì)節(jié)上還需要進(jìn)一步改進(jìn),如在傳輸文件的過(guò)程會(huì)出現(xiàn)中文漢字亂碼的情況,另外在軟件的啟動(dòng)過(guò)程中缺少注冊(cè)登錄部分。 //接收完文件后,一定要關(guān)閉,不然 可能出問(wèn)題 } 6 編譯及測(cè)試 本系統(tǒng)要求在 Linux系統(tǒng)下運(yùn)行。 localFilewrite(inBlock)。 } QDataStream in(tcpClient)。 } 為了保證在客戶(hù)端能接收到完整的文件,我們都在數(shù)據(jù)流的最開(kāi)始寫(xiě)入完整文件的大小信息,這樣客戶(hù)端就可以根據(jù)大小信息來(lái)判斷是否接受到了完整的文件。 return。 TCP協(xié)議的程序使用的是客戶(hù)端 /服務(wù)器模式,在 Qt中提供了 QTcpSocket類(lèi)來(lái)編寫(xiě)客戶(hù)端程序,使用 QTcpServer類(lèi)編寫(xiě)服務(wù)器端程序。 udpSocketreadDatagram((),())。 函數(shù) connect 激發(fā) TCP 的三路握手過(guò)程,且僅在連接建立成功或出錯(cuò)時(shí)才返回 . 服務(wù)器啟動(dòng)時(shí),要捆綁眾所周知端口, bind 函數(shù) int bind (int sockfd, const struct sockaddr *myaddr, socklen_t addrlen)。 uitextEditsetFocus()。 //即顯示 12 else uifontsizeboBoxsetCurrentIndex(uifontsizeboBox findText(QString::number(())))。 if (() == 2) { return (1)。 uitableWidgetinsertRow(0)。 4. 索引 IndexOf() 函數(shù)返回給定字符 串的第一個(gè)出現(xiàn)的索引。 系統(tǒng)主體框架包括獲取用戶(hù)信息,系統(tǒng)界面設(shè)計(jì),消息發(fā)送及文件傳輸。下面就介紹一下這方面的情況。 protected slots:在這個(gè)區(qū)內(nèi)聲明的槽意味著當(dāng)前類(lèi)及其子類(lèi)可以將信號(hào)與之相連接。當(dāng)一個(gè)信號(hào)被發(fā)射時(shí),與其相關(guān)聯(lián)的槽將被立刻執(zhí)行,就像一個(gè)正常的函數(shù)調(diào)用一樣。 服務(wù)器客戶(hù)端模式圖如下圖 1. 9 客 戶(hù) 端 A客 戶(hù) 端 B服 務(wù) 器 : 監(jiān) 聽(tīng)局 域 網(wǎng)請(qǐng)求A請(qǐng)求B響應(yīng)B響應(yīng)A請(qǐng) 求 A響應(yīng)A響應(yīng)B請(qǐng)求B 圖 1 客戶(hù)端服務(wù)器模式 信號(hào)與槽機(jī)制 信號(hào)與槽機(jī)制是 Qt 的核心機(jī)制,要精通 Qt 編程就必須對(duì)信號(hào)與槽有所了解。由于UDP 比較簡(jiǎn)單, UDP 頭包含很少的字節(jié),比 TCP 負(fù)載消耗少 ,所以 UDP 適用于不需要 TCP 可靠機(jī)制的情形,比如,當(dāng)高層協(xié)議或應(yīng)用程序提供錯(cuò)誤和流控制功能的時(shí)候。而使用 TCP協(xié)議就會(huì)在將數(shù)據(jù)包成功發(fā)送給目標(biāo)計(jì)算機(jī)后 , 發(fā)送一個(gè)確認(rèn)。 configure 的作用有兩個(gè),一是生成平臺(tái)相關(guān)的 qmake;二是配置 Qt 的 Feature,比如源文件放在哪里,庫(kù)在哪里,是否支持 OpenGL 等等?,F(xiàn)在 Qt/X11 和 Qtopia 核心都可以通過(guò) GNU 通用許可 (GPL)獲取。兩年后,即 1990 年的夏天, Haavard 和 Eirik 開(kāi)始合力為超聲成像系統(tǒng)開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序。 最終的 程序 應(yīng)具有如下功能 : 1. 實(shí)現(xiàn)在 Linux 下的局域網(wǎng)內(nèi)聊天功能。并且避免了服務(wù)器忙或與服務(wù)器無(wú)法連接時(shí),浪費(fèi)過(guò)多時(shí)間用于和服務(wù)器建立連接。用 TCP/IP 通信實(shí)現(xiàn)文件的傳送,用 UDP通信實(shí)現(xiàn)聊天信息之間的傳輸。 本課題研究的意義 隨著全球信息化進(jìn)程的不斷發(fā)展,網(wǎng)絡(luò)也在飛速發(fā)展。 Qt Creator 是 Qt 被 Nokia 收購(gòu)后推出的一款新的輕量級(jí)集成開(kāi)發(fā)環(huán)境( IDE)。 1995 年 5 月 20 日, Qt 被上傳到 。在最近的十年中 Qt 從默默無(wú)聞成長(zhǎng)為一個(gè)全世界成千上萬(wàn)客戶(hù)和開(kāi)源開(kāi)發(fā)者每天都要使用的產(chǎn)品。如果要改變安裝路徑,那么可以在 configure 命令的后面使用 prefix 選項(xiàng)來(lái)做到這一點(diǎn)。 UDP 用戶(hù) 數(shù)據(jù)報(bào)協(xié)議( UDP)是 ISO 參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。接收并發(fā)服務(wù)請(qǐng)求,要激活一 個(gè) 新進(jìn)程來(lái)處理這個(gè)客戶(hù)請(qǐng)求。槽用于接收信號(hào),但它們是普通的對(duì)象成員函數(shù)。當(dāng)與其關(guān)聯(lián)的信號(hào)被發(fā)射時(shí),這個(gè)槽就會(huì)被調(diào)用。其定義如下: bool QObject::disconnect ( const QObject * sender, const char * signal, const Object * receiver, const char * member ) [static] 元對(duì)象工具 : 元對(duì)象編譯器 moc( meta object piler) 對(duì) C++ 文件中的類(lèi)聲明進(jìn)行分析并產(chǎn)生用于初始化元對(duì)象的 C++ 代碼,元對(duì)象包含全部信號(hào)和槽的名字以及指向這些函數(shù)的指針。 6. 函數(shù)指針不能作為信號(hào)或槽的參數(shù)。服務(wù)器端開(kāi)啟窗口顯示所要選擇發(fā)送的文件路徑,發(fā)送進(jìn)度,發(fā)送及退出按鈕。 foreach 語(yǔ)句用于循環(huán)訪問(wèn)集合以獲取所需信息,但不應(yīng)用于更改集合內(nèi)容以避免產(chǎn)生不可預(yù)知的副作用。 } } 18 //獲取用戶(hù)名 QString Widget::getUserName() { QStringList envVariables。 uitextBrowsersetCurrentFont(QFont(Times New Roman,10))。 uitextEditsetFocus()。 通用套接口地址結(jié)構(gòu): UDP 數(shù)據(jù)報(bào)套接字是無(wú)連接的,它支持雙向的數(shù)據(jù)傳輸,具有開(kāi)銷(xiāo)小、數(shù)據(jù)傳輸效率高的特點(diǎn),但不保證數(shù)據(jù)傳輸?shù)目煽啃浴⒂行蛐院蜔o(wú)重復(fù)性,適合少量數(shù)據(jù)傳輸、以及時(shí)間敏感的音視頻多媒 體數(shù)據(jù)傳輸。 } 發(fā)送消息前判斷消息的內(nèi)容是否為空或編輯的消息文本過(guò)長(zhǎng) . 24 if(uitextEdittoPlainText() == ) { QMessageBox::warning(0,tr(警告 ),tr(發(fā)送內(nèi)容不能為空),QMessageBox::Ok)。 uitextBrowsersetCurrentFont(QFont(Times New Roman,12))。當(dāng)傳輸完畢后斷開(kāi)連接。 sendOutqint64(0)qint64(0)currentFile。 27 tcpPort = 6666。 (fileNameSize != 0)){ infileName。f39。傳輸文件時(shí),發(fā)送文件的一方為服務(wù)器端,接受文件的一方為客戶(hù)端, 服務(wù)器端和客戶(hù)端會(huì)開(kāi)啟新的窗口。這也讓我認(rèn)識(shí)到 QT 的知識(shí)是多么博大精深,幾個(gè)月的學(xué)習(xí)是遠(yuǎn)遠(yuǎn)不夠的。老師嚴(yán)謹(jǐn)求實(shí)的治學(xué)態(tài)度、高度的敬業(yè)精神、兢兢業(yè)業(yè)的工作作風(fēng) , 將是伴隨我。 在做這個(gè)項(xiàng)目的過(guò)程中,遇到的最大問(wèn)題是無(wú)法解決發(fā)生中文時(shí)出現(xiàn)亂碼的問(wèn)題。 2, make 進(jìn)行編譯,生成可執(zhí)行文件。f39。 } if((tcpClientbytesAvailable() = fileNameSize) amp。當(dāng)出現(xiàn)錯(cuò)誤時(shí)發(fā)出 error()信號(hào),我們執(zhí)行 displayError()槽函數(shù)。/39。如果文件大小為 OK就認(rèn)為是文件傳輸完畢自動(dòng)斷開(kāi)連接。 switch(messageType) { case Message: { in userName localHostName ipAddress message。 uitextEditsetFocus()。 } } 22 消息的發(fā)送和接受是本系統(tǒng)設(shè)計(jì)的最基礎(chǔ)的部分。 } //文字顏色設(shè)置: void Widget::on_textcolor_clicked() { color = QColorDialog::getColor(color,this)。 uitableWidgetremoveRow(rowNum)。 uionlineUsersetText(tr(在線人數(shù): %1).arg(uitableWidgetrowCount()))。 result = (Bill)。消息狀態(tài)欄包括清除聊天記錄和保存聊天記錄兩個(gè)部分。 4. 宏定義不能用在 signal 和 slot 的參數(shù)中。如果發(fā)射者與接收者屬于同一個(gè)對(duì)象的話,那么在 connect 調(diào)用中接收者參數(shù)可以省略。 void mySignalParam(int x,int y)。當(dāng)對(duì)象改變其狀態(tài)時(shí),信號(hào)就由該對(duì)象發(fā)射 (emit) 出去,這就是對(duì)象所要做的全部事情,它不知道另一端是誰(shuí)在接收這個(gè)信號(hào)。 ( 2) 等待客戶(hù)請(qǐng)求到達(dá)該端口。然而 UDP是無(wú)連接的 ,網(wǎng)絡(luò)負(fù) 荷小。 第 5 步:安裝 Qt su c “make install” 然后輸入 root 密碼。 從奇趣誕生的第一天, Qt 的流行就從未減弱過(guò),即使今天也仍在繼續(xù) 。到 1993 年, Haavard 和 Eirik 已經(jīng)完成了 Qt 的第一個(gè)圖形內(nèi)核的開(kāi)發(fā)并 4 能用它來(lái)實(shí)現(xiàn)一些 窗口部件 。 能夠 提供給應(yīng)用程序開(kāi)發(fā) 者 建立藝術(shù)級(jí)的圖形用戶(hù)界面 所需的所有功能。 這些應(yīng)用對(duì)局域網(wǎng)的信息吞吐、處理能力的要求也越來(lái)越高。 本 系統(tǒng) 主要是 運(yùn) 用 Qt 技術(shù)來(lái)實(shí)現(xiàn)一個(gè) linux 下的 局域網(wǎng)聊天軟件 ,完成即時(shí)聊天并傳輸簡(jiǎ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)聊天,文件傳輸及資源共享還有很大的缺陷。 3. 能夠采集聊天室內(nèi)成員的信息,并顯示成員 IP,成員名和所屬組。就是在那個(gè)夏季的一天, Haavard 和 Eirik 外出享受夏日的陽(yáng)光,當(dāng)他們?cè)诠珗@的一個(gè)長(zhǎng)椅上坐定之后, Haavard 說(shuō) “ 我們需要一個(gè)面向?qū)ο蟮娘@示系統(tǒng) ” 。 Qtopia 贏得了 2020 和 2020 年 LinuxWorld 的 “ 最佳嵌入式 Linux 解決方案 ” 大獎(jiǎng), Qtopia Phone 也在 2020 年贏得了相同的榮譽(yù)。 如果 configure 失敗,可以以使用 v 選項(xiàng)查看具體的原因,命令是 ./configure v 如果以后需要在這次配置的基礎(chǔ)上更改選項(xiàng),先要運(yùn)行 make confclean 命令以清除之前的配置。另外在傳輸?shù)倪^(guò)程中 , 如果接收到無(wú)序、丟失以及被破壞的數(shù)據(jù)包 , TCP 還可以負(fù)責(zé)恢復(fù)可見(jiàn) TCP是一種可靠的 , 面向連接 , 面向數(shù)據(jù)流的傳輸協(xié)議。 C/S架構(gòu) 8 C/S 結(jié)構(gòu)( Client/Server 結(jié)構(gòu))是大家熟知的客戶(hù)機(jī)和服務(wù)器結(jié)構(gòu)。信號(hào)與槽是 Qt 自行定義的一種通信機(jī)制,它獨(dú)立于標(biāo)準(zhǔn)的 C/C++ 語(yǔ)言,因此要正確的處理信號(hào)與槽,必須借助一個(gè)稱(chēng)為 moc( Meta Object Compiler) 的 Qt 工具,該工具是一個(gè) C++ 預(yù)處理程序,它為高層次的事件處理自動(dòng)生成所需要的附加代碼。只有當(dāng)所有的槽 返回以后發(fā)射函數(shù)( emit)才返回。 private slots:在這個(gè)區(qū)內(nèi)聲明的槽意味著只有類(lèi)自己可以將信號(hào)與之相連接。但如果我們要追求高效率的話,比如在實(shí)時(shí)系統(tǒng)中就要盡可能的少用這種機(jī)制。 Qt 提供了 QTcpSocket 類(lèi),QTcpServer 類(lèi)和 QUdpSocket 類(lèi)等供開(kāi)發(fā)人員使用。 5. 替換 replaceInStrings() QStringList files。 uitableWidgetsetItem(0,1,host)。 } } } return false。 uitextitalicsetChecked(().italic())。 uitextEditsetFocus()。 TCP 服 務(wù)器調(diào)用 accept,從已完成連接隊(duì)列頭返回下一個(gè)已完成連接,若已完成隊(duì)列為空,則進(jìn)程睡眠。datagram,QIODevice::ReadOnly)。而在客戶(hù)端,一旦有數(shù)據(jù)到來(lái)就會(huì)發(fā)出 接受 信號(hào),我們可以關(guān)聯(lián)此信號(hào),進(jìn)行數(shù)據(jù)的接收。 QDataStream sendOut(amp。在 block 的開(kāi)始添加了一個(gè) quint16 大小的空間,也就是兩字節(jié)的空間,它用于后面放置文件的大小信息。//設(shè)置數(shù)據(jù)流版本,要和服務(wù)器端相同 float useTime = ()。
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1