![基于QT局域網(wǎng)聊天系統(tǒng)畢業(yè)論文(設(shè)計)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/9/5ec6e677-b4ba-4935-850d-1875549bf979/5ec6e677-b4ba-4935-850d-1875549bf9791.gif)
![基于QT局域網(wǎng)聊天系統(tǒng)畢業(yè)論文(設(shè)計)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/9/5ec6e677-b4ba-4935-850d-1875549bf979/5ec6e677-b4ba-4935-850d-1875549bf9792.gif)
![基于QT局域網(wǎng)聊天系統(tǒng)畢業(yè)論文(設(shè)計)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/9/5ec6e677-b4ba-4935-850d-1875549bf979/5ec6e677-b4ba-4935-850d-1875549bf9793.gif)
![基于QT局域網(wǎng)聊天系統(tǒng)畢業(yè)論文(設(shè)計)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/9/5ec6e677-b4ba-4935-850d-1875549bf979/5ec6e677-b4ba-4935-850d-1875549bf9794.gif)
![基于QT局域網(wǎng)聊天系統(tǒng)畢業(yè)論文(設(shè)計)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/9/5ec6e677-b4ba-4935-850d-1875549bf979/5ec6e677-b4ba-4935-850d-1875549bf9795.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、華東交通大學(xué)理工學(xué)院institute of technology. east china jiaotong university 畢 業(yè) 設(shè) 計(論 文) graduation design (thesis)(20 20 年)題 目: 基于qt的網(wǎng)絡(luò)聊天系統(tǒng)設(shè)計 分 院: 電氣與信息工程分院 專 業(yè): 計算機科學(xué)與技術(shù) 班 級: 計科2009-2 學(xué) 號: 20090210440226 學(xué)生姓名: 指導(dǎo)教師: 起訖日期: 2012.122013.5 華東交通大學(xué)理工學(xué)院畢業(yè)設(shè)計(論文)原創(chuàng)性申明本人鄭重申明:所呈交的畢業(yè)設(shè)計(論文)是本人在導(dǎo)師指導(dǎo)下獨立進行的研究工作所取得的研究成果。設(shè)計(
2、論文)中引用他人的文獻、數(shù)據(jù)、圖件、資料,均已在設(shè)計(論文)中特別加以標注引用,除此之外,本設(shè)計(論文)不含任何其他個人或集體已經(jīng)發(fā)表或撰寫的成果作品。對本文的研究作出重要貢獻的個人和集體,均已在文中以明確方式表明。本人完全意識到本申明的法律后果由本人承擔。畢業(yè)設(shè)計(論文)作者簽名: 日期: 年 月 日畢業(yè)設(shè)計(論文)版權(quán)使用授權(quán)書本畢業(yè)設(shè)計(論文)作者完全了解學(xué)院有關(guān)保留、使用畢業(yè)設(shè)計(論文)的規(guī)定,同意學(xué)校保留并向國家有關(guān)部門或機構(gòu)送交設(shè)計(論文)的復(fù)印件和電子版,允許設(shè)計(論文)被查閱和借閱。本人授權(quán)華東交通大學(xué)理工學(xué)院可以將本設(shè)計(論文)的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫進行檢索,可以采用
3、影印、縮印或掃描等復(fù)制手段保存和匯編畢業(yè)設(shè)計(論文)。(保密的畢業(yè)設(shè)計(論文)在解密后適用本授權(quán)書) 畢業(yè)設(shè)計(論文)作者簽名: 指導(dǎo)教師簽名:簽字日期: 年 月 日 簽字日期: 年 月 日摘 要越來越多的嵌入式終端需要一個圖形化的接口界面,良好的人機交互界面是嵌入式系統(tǒng)設(shè)計的一個關(guān)鍵技術(shù)。特別是嵌入式的手持設(shè)備,比如手機,筆記本電腦等。它對于嵌入式的實用性,美觀性,和娛樂性都提供了極大地幫助,隨著科學(xué)技術(shù)的高速發(fā)展,移動手持設(shè)備的網(wǎng)絡(luò)功能已經(jīng)非常成熟了,人們對手持設(shè)備網(wǎng)絡(luò)軟件的需求也日益增加,開發(fā)基于嵌入式終端的網(wǎng)絡(luò)聊天系統(tǒng)軟件具有很大的使用意義和價值。本文的目標是實現(xiàn)基于qt的網(wǎng)絡(luò)聊天系統(tǒng)
4、設(shè)計,論文開始接受了linux的優(yōu)點和qt用于開發(fā)嵌入式圖形界面的優(yōu)點,著重分析了qt在軟件開發(fā)中的編程機制。并根據(jù)嵌入式應(yīng)用的特點對嵌入式終端下的網(wǎng)絡(luò)聊天系統(tǒng)進行了需求分析,概要設(shè)計,詳細設(shè)計。最后對關(guān)于論文的進一步的改進方向進行了簡要的分析。 本文討論的內(nèi)容采用qt軟件進行圖形界面設(shè)計,利用軟件自帶的庫,實現(xiàn)軟件界面的設(shè)計, 本次研究實現(xiàn)類似于qq的網(wǎng)絡(luò)聊天方式,多個客戶端可同時登陸服務(wù)器,并且客戶端之間可進行通信。關(guān)鍵詞:嵌入式;qt;網(wǎng)絡(luò)聊天abstract 目 錄中文摘要英文摘要目錄引言第一章 linux和qt的簡介第二章 軟件需求分析第三章 網(wǎng)絡(luò)聊天系統(tǒng)的概要設(shè)計第四章 網(wǎng)絡(luò)聊天系
5、統(tǒng)的詳細設(shè)計第五章 系統(tǒng)測試第六章 系統(tǒng)運行和維護第七章 結(jié)語第八章 參考文獻第九章 附錄第十章 后記引 言 隨著嵌入式產(chǎn)品的高速發(fā)展,大多數(shù)嵌入式操作系統(tǒng)擁有網(wǎng)絡(luò)和圖形界面的工程。利用源代碼開發(fā)的linux搭建的嵌入式操作系統(tǒng),擁有l(wèi)inux具有開源,完全免費,和其強大的網(wǎng)絡(luò)功能,越來越多的嵌入式產(chǎn)品都采用linux操作系統(tǒng)。它能提供全功能的桌面計算,并且支持大多數(shù)嵌入式操作系統(tǒng)上使用的芯片,包括arm,power 和等。在嵌入式上使用輕量級,高性能,高可靠,可配置的系統(tǒng)成為可行的解決方案。 雖然市場上出現(xiàn)了許多優(yōu)秀的圖形界面可發(fā)軟件,但是隨著計算機技術(shù)的高速發(fā)展,當新硬件,新技術(shù)出現(xiàn)時,計
6、算機的體系結(jié)構(gòu), ,指令系統(tǒng),和操作系統(tǒng)都可能發(fā)生相應(yīng)的變化,這勢必會導(dǎo)致一部分應(yīng)用軟件在新的平臺上無法運行,可移植性不行,但是基于跨平臺的特點,它能解決這個問題,極大地提高了應(yīng)用程序的可移植性。 因此,利用linux做基于qt的嵌入式聊天系統(tǒng)的開發(fā)是一個非常有意義的課題,具有非常重要的研究和商業(yè)價值。第一章 linux和qt的簡介1.1 linux的主要特性(1)符合posix1003.1標準posix1003.1標準定義了一個最小的unix操作系統(tǒng)接口,任何操作系統(tǒng)只有符合這一標準才能運
7、行unix程序。(2)支持多用戶訪問和多任務(wù)編程linux是一個多用戶操作系統(tǒng),它允許多個用戶同時訪問系統(tǒng)而不會造成用戶之間的干擾。另外,linux還支持多用戶編程,一個用戶可以創(chuàng)建多個進程,并使它們協(xié)同工作以完成用戶的需求。(3)采用頁式存儲管理頁式管理使linux能更有效的利用物理存儲空間,頁面的換入換出為用戶提供更大的存儲空間。(4)支持動態(tài)鏈接用戶的程序的執(zhí)行往往離不開標準庫的支持,多數(shù)操作系統(tǒng)一般采用靜態(tài)鏈接方式-即在編譯階段就把用戶程序和標準庫鏈接好,這樣當用多個進程運行時,可能會造成庫代碼在內(nèi)存中有多個副本而浪費空間。而linux支持動態(tài)鏈接方式-即用戶程序在運行階段才把庫鏈接進
8、來,這樣就能保證庫代碼在內(nèi)存中時唯一的,可以節(jié)省內(nèi)存空間。(5)支持多文件系統(tǒng)linux支持多文件系統(tǒng),目前支持的文件系統(tǒng)有:ext2,ext3,xiafs,isof,msdos,umsdos,proc,nfs,sysv,minix,smb,ufs,ncp,vfat等。linux最常用的文件系統(tǒng)是ext2,它的文件名程度可達255個字節(jié)。(6)支持tcp/ip,slip和ppp協(xié)議在linux中用戶可以使用所有的網(wǎng)絡(luò)服務(wù),如nfs,telnet等。slip和ppp能支持串行線上的tcp/ip協(xié)議的使用,這意味著用戶可用一個高速的調(diào)制解調(diào)器(modem)通過電話線連入internet網(wǎng)中。1.2
9、 qt的主要特性qt是一個跨平臺的c+ gui應(yīng)用構(gòu)架,它提供了豐富的窗口部件集,具有面向?qū)ο?、易于擴展、真正的組建編程等特點,更引人注目的是目前l(fā)inux上最流行的kde桌面環(huán)境就是建立在qt庫的基礎(chǔ)上的。qt支持一下平臺:ms/windows-95、98、nt 和 2000;unix/x11-linux、sun solaris、hp-ux、digital unix、ibm aix、sgi irix;embedded- 支持 framebuffer 的 linux 平臺.信號和槽機制是qt編程的核心機制。信號和槽是一種高級接口,應(yīng)用于對象之間的通信,它是qt的核心機制也是qt區(qū)別于其它工具包
10、的重要地方。qt具有跨桌面和嵌入式操作系統(tǒng)的移植性。使用 qt只需一次性開發(fā)應(yīng)用程序,就可跨不同桌面和嵌入式操作系統(tǒng)進行部署,而無須重新編寫源代碼。具有跨平臺 ide的集成開發(fā)工具:qt creator 是專為滿足 qt 開發(fā)人員需求而量身定制的跨平臺集成開發(fā)環(huán)境 (ide)。qt creator 可在 windows、linux/x11 和 mac os x 桌面操作系統(tǒng)上運行,供開發(fā)人員針對多個桌面和移動設(shè)備平臺創(chuàng)建應(yīng)用程序。第二章 軟件需求分析2.1 系統(tǒng)客戶要求需求分析是軟件開發(fā)中的一個重要步驟,它的基本任務(wù)就是要準確地分析出系統(tǒng)應(yīng)用者的需要,以及系統(tǒng)目標必須具備哪些工程,這些工程必須
11、準確的體現(xiàn)出用戶的要求。 根據(jù)網(wǎng)絡(luò)聊天系統(tǒng)的特點,它應(yīng)該能實現(xiàn)即時通訊的功能。客戶端和服務(wù)器應(yīng)該具有不同的功能,其中服務(wù)器的主要工程就是管理客戶端的登陸信息,包括賬號、密碼、在線狀況、昵稱等,而客戶端的主要功能就是實現(xiàn)能夠連接服務(wù)器,注冊用戶,登陸服務(wù)器,并且能實現(xiàn)客戶端之間的通信。并隨時更新用戶的信息。2.2 網(wǎng)絡(luò)聊天系統(tǒng)架構(gòu)分析簡介 網(wǎng)絡(luò)聊天系統(tǒng)分為客戶端和服務(wù)器兩部分,其中服務(wù)器運行在pc機上,客戶端可運行在開發(fā)板上,亦可運行在pc機上。首先服務(wù)器開始監(jiān)聽,然后客戶端通過注冊,登陸服務(wù)器,然后客戶端之間即可進行通信。2.3 網(wǎng)絡(luò)聊天系統(tǒng)界面設(shè)計(1)服務(wù)器界面如圖1所示;服務(wù)器提供了所有
12、注冊了的用戶的用戶名,密碼,昵稱和登錄狀態(tài)信息,方便對用戶信息進行管理。(2)客戶端登錄模塊界面顯示如圖2所示;客戶端登錄模塊類似于qq的登陸界面,只是它多了連接服務(wù)器的ip地址和端口號。(3)客戶端注冊模塊界面顯示如圖3所示;客戶端注冊模塊可以讓新用戶注冊信息。(4)客戶端好友列表界面顯示如圖4所示;好友列表模塊顯示用戶好友和自己的用戶名和登陸狀態(tài)。(5)客戶端聊天界面如圖5所示;客戶端聊天模塊可以讓用戶與其他用戶通信。圖1 服務(wù)器主界面圖2 客戶端登錄模塊主界面圖3 注冊模塊界面圖4 好友列表界面圖5 聊天界面2.4 網(wǎng)絡(luò)聊天系統(tǒng)架構(gòu)圖2.4.1 服務(wù)器架構(gòu)圖服務(wù)器結(jié)構(gòu)圖如圖6所示:圖6
13、服務(wù)器結(jié)構(gòu)圖2.4.2 客戶端架構(gòu)圖客戶端結(jié)構(gòu)圖如圖7所示:圖7 客戶端結(jié)構(gòu)圖2.5 系統(tǒng)開發(fā)目標 (1) 實現(xiàn)好友登陸,當好友登陸或離開時,服務(wù)器能即時通知所有的在線用戶。 (2) 收發(fā)信息同步,當一個用戶想其他的好友發(fā)送消息是,相應(yīng)的用戶能即時接受消息。2.6 開發(fā)環(huán)境軟件環(huán)境:ubuntu10.11硬件環(huán)境:1gb以上的cpu,500mb以上的內(nèi)存第3章 網(wǎng)絡(luò)聊天系統(tǒng)的概要設(shè)計 根據(jù)調(diào)查和研究,得到系統(tǒng)所要處理的數(shù)據(jù)流程如圖8所示:圖8 網(wǎng)絡(luò)聊天系統(tǒng)數(shù)據(jù)流程圖3.1服務(wù)器的具體實現(xiàn)(1)解決中文亂碼的關(guān)鍵代碼:qtextcodec:setcodecforcstrings(qtextcod
14、ec:codecforname(utf-8);qtextcodec:setcodecforlocale(qtextcodec:codecforname(utf-8);qtextcodec:setcodecfortr(qtextcodec:codecforname(utf-8);其頭文件為#include .(2)使用數(shù)據(jù)庫保持用戶信息,需要用到如下庫:#include #include 其中qsqldatabase庫代表一個數(shù)據(jù)庫的連接,qsqlquery提供了執(zhí)行sql命令的方法。使用方式如下:qsqlquery query;query.exec(“drop table scooter”);
15、 數(shù)據(jù)庫的操作還涉及到庫 qsqltablemodle,該類為單一的數(shù)據(jù)庫表提供了可編輯的模型。使用方法如下:model = new qsqltablemodle(this);modle-settable(“scooter”);model-setsort(scooter_name,qt:ascendingorder);model-select();(3)打開和關(guān)閉監(jiān)聽的關(guān)鍵技術(shù):當要用qstring類型的變量保持ip地址和端口號信息時,可使用方法trimmed(),它可以去除最前面和最后面多輸入的空格??梢允褂胵messagebox類來給出提示信息,例如:qmessagebox:critica
16、l(null,tr(“warnning”),tr(“error!”));(4)使用udp協(xié)議來通信使用方法如下: 添加頭文件#include udpsocket = new qudpsocket(this);if(!udpsocket-bind(qhostaddress(ip),(quint16)port+1)qmessagebox:critical(null,”warnning”,”error!”);connect(udpsocket,signal(readyread(),this,slot(recvmsg();3.2 客戶端的具體實現(xiàn) 客戶端主要有4個大模塊界面:登陸模塊,注冊模塊,好友列
17、表模塊,通信模塊。下面對這4個模塊分別進行概要的分析。3.2.1 登陸模塊可以使用resize方法來設(shè)置窗口的大小,從而實現(xiàn)顯示部分窗口的功能,具體使用如下:this-resize(366,231);在登陸模塊還有如下關(guān)鍵代碼:socket-abort();socket-connecttohost(qhostaddress(ip),(quint16)port.toint();connect(socket,signal(readyread(),this,slot(recvmsg();其中abort()方法用來關(guān)閉套接字,并且重新設(shè)置套接字。3.2.2 注冊模塊注冊模塊主要使用的關(guān)鍵技術(shù)是正則表達
18、式,頭文件是#include 使用方式如下:qregexp rx(“1-9/1,20-94,7$”);表示前面1到2個是1-9中的某個數(shù),后面跟著的是4到7個0到9的數(shù)字。其中表示鎖定開頭,$表示鎖定結(jié)尾。具體使用如下:qregexp rx(“1-91,20-94,7”);rx.setpatternsyntax(qregexp:regexp);if(!rx.exactmatch(username)qmessagebox:warning(null,tr(“warning”),tr(“username error”);3.2.3 好友列表模塊 好友表面模塊主要是顯示好友上線信息,和好友列表,使用u
19、dp協(xié)議接受服務(wù)器帶來的信息。當雙擊某好友用戶時,機會彈出與相應(yīng)好友的對話框。具體實現(xiàn)將在詳細設(shè)計階段說明。3.2.4 通信模塊 通信模塊是使用udp協(xié)議進行通信的,因為它不必建立連接。第四章 網(wǎng)絡(luò)聊天系統(tǒng)的詳細設(shè)計4.1 服務(wù)器模塊 服務(wù)器和客戶端通信既有通過tcp/ip協(xié)議,也有通過udp協(xié)議進行通信的。其中用戶下線和用戶信息更新時使用udp協(xié)議,而用戶登錄,注冊時使用tcp協(xié)議,使用數(shù)據(jù)庫保持用戶信息。/server.cpp文件/#include server.h#include ui_server.h#include #include #include #include #includ
20、e #include #include #include #include server:server(qsqldatabase *db, qwidget *parent) : qmainwindow(parent), ui(new ui:server) ui-setupui(this); server = new qtcpserver(this); this-setwindowtitle(jy2012_qqserver); ui-pushbutton_2-settext(startlisten); ip.clear(); port.clear(); this-db = db; display
21、view();server:server() delete ui;/open listen or close listen/void server:on_pushbutton_2_clicked() ip.clear(); port.clear(); ip = ui-lineedit-text().trimmed();/去除最前面和最后面多余的空格 port = ui-lineedit_2-text().trimmed(); if(ui-pushbutton_2-text() = startlisten) if(!server-listen(qhostaddress(ip),(quint16)
22、port.touint() qmessagebox:critical( null, tr(warning), tr(listen error) ); else connect(server,signal(newconnection(),this,slot(newconnection(); udpsocket = new qudpsocket(this); if(!udpsocket-bind(qhostaddress(ip),(quint16)port.touint() + 1) qmessagebox:critical(null,tr(warning),tr(bind udpsocket e
23、rror).arg(udpsocket-errorstring(); connect(udpsocket,signal(readyread(),this,slot(readdatagrams(); ui-pushbutton_2-settext(stoplisten); ui-lineedit-setenabled(false); ui-lineedit_2-setenabled(false); else if(ui-pushbutton_2-text() = stoplisten) server-close(); ui-pushbutton_2-settext(startlisten); u
24、i-lineedit-setenabled(true); ui-lineedit_2-setenabled(true); void server:newconnection() qdebug() nextpendingconnection(); connect(socket,signal(readyread(),this,slot(recvmsg();void server:recvmsg() qbytearray block; block = socket-readall(); qdatastream in(&block,qiodevice:readonly); in.setversion(
25、qdatastream:qt_4_7); quint16 datagramsize; qstring msgtype; in datagramsize msgtype; qdebug() datagramsize * username passwd nickname; qdebug() username id passwd; qdebug() id,passwd id passwd; qsqlquery query; if(!(query.exec(select username,passwd from scooter) qmessagebox:critical(null, exec, exe
26、c failed.); return; while (query.next() if(query.value(0).tostring() = id & query.value(1).tostring() = passwd) qdebug() user login success; qsqlquery query2; query2.exec(update scooter set state=on where username=:username); query2.bindvalue(:username,id); if(!query2.exec() qmessagebox:critical(nul
27、l,error,exec failed(update scooter set state=on where username=:username); return; query2.exec(select username,nickname,state from scooter); while(query2.next() idlist.append(query2.value(0).tostring(); nicklist.append(query2.value(1).tostring(); statelist.append(query2.value(2).tostring(); qdebug()
28、 idlist nicklist statelist *; on_pushbutton_clicked();/刷新列表 qstring msgtype = update; qbytearray block; qdatastream out(&block,qiodevice:writeonly); out.setversion(qdatastream:qt_4_7); out (quint16)0 msgtype idlist nicklist seek(0); out write(block); /發(fā)送更新信息給所有的同一網(wǎng)段用戶 udpsocket-writedatagram(block.d
29、ata(),block.size(), qhostaddress:broadcast,6666); return; if(!query.next() qstring msgtype = login _failed; qbytearray block; qdatastream out(&block,qiodevice:writeonly); out.setversion(qdatastream:qt_4_7); out (quint16)0 seek(0); out write(block); return; bool server:opendb()qdebug() 111; qdebug()
30、setdatabasename(scooters.dat); qdebug() open() qdebug() lasterror().text(); return false; qdebug() 555; return true;int server:insertuser(qstring id, qstring passwd, qstring nickname,qstring state) qsqlquery query; if (!(query.exec(select username from scooter) qmessagebox:critical(null, exec, exec
31、failed.(select username from scooter); return -1; /this id already exist while (query.next() if ( query.value(0).tostring() = id) qdebug() user has existed; qstring msgtype = register_failed; qbytearray block; qdatastream out(&block,qiodevice:writeonly); out.setversion(qdatastream:qt_4_7); out (quin
32、t16)0 msgtype idlist nicklist seek(0); out write(block); return 0; /:表示在后面給定值 query.exec(insert into scooter (username,passwd,nickname,state) values (:username,:passwd,:nickname,:state); query.bindvalue(:username,id); query.bindvalue(:passwd,passwd); query.bindvalue(:name,nickname); query.bindvalue(
33、:state,state); if(!query.exec() qmessagebox:critical(null,error,exec failed.(insert into scooter (username,passwd,nickname,state).); return -1; displayview(); qstring msgtype = register_success; qbytearray block; qdatastream out(&block,qiodevice:writeonly); out.setversion(qdatastream:qt_4_7); out (q
34、uint16)0 seek(0); out write(block); return 1;void server:closedb() db-close();void server:displayview() model = new qsqltablemodel(this); model-settable(scooter); model-setsort(scooter_name, qt:ascendingorder); model-select(); ui-tableview-setmodel(model); ui-tableview-setselectionmode(qabstractitem
35、view:singleselection); ui-tableview-setselectionbehavior(qabstractitemview:selectrows); ui-tableview-setcolumnhidden(scooter_id, true); ui-tableview-resizecolumnstocontents(); ui-tableview-setedittriggers(qabstractitemview:noedittriggers); qheaderview *header = ui-tableview-horizontalheader(); heade
36、r-setstretchlastsection(true);void server:readdatagrams() qdebug() haspendingdatagrams() qbytearray block; block.resize(udpsocket-pendingdatagramsize(); if ( -1 = udpsocket-readdatagram(block.data(), block.size(), &senderip, &senderport) continue; processdatagram(block); void server:processdatagram(
37、qbytearray block) qdebug() datagramsize msgtype; qdebug() datagramsize *udp* myid mynick; qsqlquery query2; query2.exec(update scooter set state=off where username=:username); query2.bindvalue(:username,myid); if(!query2.exec() qmessagebox:critical(null,error,exec failed(update scooter set state=off
38、 where username=:username); return; query2.exec(select username,nickname,state from scooter); idlist.clear(); nicklist.clear(); statelist.clear(); while(query2.next() idlist.append(query2.value(0).tostring(); nicklist.append(query2.value(1).tostring(); statelist.append(query2.value(2).tostring(); qd
39、ebug() idlist nicklist statelist *; on_pushbutton_clicked(); qstring msgtype = update; qbytearray block; qdatastream out(&block,qiodevice:writeonly); out.setversion(qdatastream:qt_4_7); out (quint16)0 msgtype idlist nicklist seek(0); out writedatagram(block.data(),block.size(), qhostaddress:broadcast,6666); return; / update data /void server:on_pushbutton_clicked() delete model; displayview();/ close event /void server:closeevent(qcloseevent *event) qmessagebox:standardbutton button; button = qmessagebox:quest
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版七年級數(shù)學(xué)下冊8.2.1.2《代入消元法(2)》聽評課記錄
- 新版華東師大版八年級數(shù)學(xué)下冊《18平行四邊形》聽評課記錄30
- 珍稀郵票贈與合同(2篇)
- 生物識別技術(shù)開發(fā)合同(2篇)
- 蘇人版道德與法治九年級上冊2.1《參與公共生活》聽課評課記錄
- 《青銅器與甲骨文》聽課評課記錄2(新部編人教版七年級上冊歷史)
- 晉教版地理七年級下冊《9.1 東南亞──兩洲兩洋的“十字路口”》聽課評課記錄2
- 蘇科版數(shù)學(xué)七年級上冊第四章 一元一次方程-應(yīng)用教聽評課記錄
- 湘教版數(shù)學(xué)八年級下冊2.2.2《平行四邊形的判定定理》聽評課記錄2
- 湘教版九年級數(shù)學(xué)上冊第1章反比例函數(shù)1.3反比例函數(shù)的應(yīng)用聽評課記錄
- 5《這些事我來做》(說課稿)-部編版道德與法治四年級上冊
- 2025年度高端商務(wù)車輛聘用司機勞動合同模板(專業(yè)版)4篇
- 2025年福建福州市倉山區(qū)國有投資發(fā)展集團有限公司招聘筆試參考題庫附帶答案詳解
- 2025年人教版新教材數(shù)學(xué)一年級下冊教學(xué)計劃(含進度表)
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 2025長江航道工程局招聘101人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年黑龍江哈爾濱市面向社會招聘社區(qū)工作者1598人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年國新國際投資有限公司招聘筆試參考題庫含答案解析
- 2025年八省聯(lián)考四川高考生物試卷真題答案詳解(精校打印)
- 《供電營業(yè)規(guī)則》
- 執(zhí)行總經(jīng)理崗位職責
評論
0/150
提交評論