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

正文內(nèi)容

基于qt的局域網(wǎng)聊天系統(tǒng)設(shè)計論文(文件)

2024-12-11 21:48 上一頁面

下一頁面
 

【正文】 ,在程 序執(zhí)行時也有可能產(chǎn)生死循環(huán)。 4. 宏定義不能用在 signal 和 slot 的參數(shù)中。 8. 信號與槽也不能攜帶模板類參數(shù)。系統(tǒng)要求能夠?qū)崿F(xiàn)聊天功能,能夠傳輸文件,并能夠更改字體大小和顏色及文字加粗傾斜和下劃線功能。 QTcpSocket 類提供一個 TCP 套接字,幫助開發(fā)人員創(chuàng)建 TCP 連接和數(shù)據(jù)交流。消息狀態(tài)欄包括清除聊天記錄和保存聊天記錄兩個部分。 其成員函數(shù)用于操作這個字符串列表如append(), insert(), replace(), removeAll(), removeAt(), removeFirst(), removeLast(), and removeOne()等 1. 增加字符串 QStringList fonts。 QStringList list1 = (,)。 files $QTDIR/src/moc/ ($QTDIR, /usr/lib/qt)。 result = (Bill)。 QTableWidgetItem 用來表示表格中的一個單元格,正個表格都需要用逐個單元格構(gòu)建起來。 QTableWidgetItem *ip = new QTableWidgetItem(ipAddress)。 uitableWidgetsetItem(0,2,ip)。 uionlineUsersetText(tr(在線人數(shù): %1).arg(uitableWidgetrowCount()))。 QStringList environment = QProcess::systemEnvironment()。)。 } //獲取 ip地址: QString Widget::getIP() //獲取 ip 地址 { QListQHostAddress list = QNetworkInterface::allAddresses()。 uitableWidgetremoveRow(rowNum)。 uionlineUsersetText(tr(在線人數(shù): %1).arg(uitableWidgetrowCount()))。 if(()9) //如果字體大小出錯, 設(shè)置 最小的字體為 9 uifontsizeboBoxsetCurrentIndex(3)。 uitextUnderlinesetChecked(().underline())。 } //文字顏色設(shè)置: void Widget::on_textcolor_clicked() { color = QColorDialog::getColor(color,this)。 else uitextEditsetFontWeight(QFont::Normal)。 21 } //字體傾斜設(shè)置: void Widget::on_textitalic_clicked(bool checked) { uitextEditsetFontItalic(checked)。 } 消息記錄 //保存聊天記錄 void Widget::on_save_clicked() { if(uitextBrowserdocument()isEmpty()) QMessageBox::warning(0,tr(警告 ),tr(聊天記錄為空,無法保存!),QMessageBox::Ok)。 } } 22 消息的發(fā)送和接受是本系統(tǒng)設(shè)計的最基礎(chǔ)的部分。 in_addr_t i_addr (const char *strptr)。 connect 函數(shù)來建立一個與 TCP 服務(wù)器的鏈接 int connect (int sockfd, const struct sockaddr *servaddr, socklen_t addrlen)。 23 int accept (int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen)。 uitextEditsetFocus()。 } out address getMessage()。 (udpSocketpendingDatagramSize())。 int messageType。 switch(messageType) { case Message: { in userName localHostName ipAddress message。 25 uitextBrowserappend(message)。也就是說,它能使一臺計算機上的數(shù)據(jù)無差錯的發(fā)往網(wǎng)絡(luò)上的其他計算機,所以當(dāng)要傳輸大量數(shù)據(jù)時,我們選用 TCP 協(xié)議 。 一、服務(wù)器端。如果文件大小為 OK就認(rèn)為是文件傳輸完畢自動斷開連接。 clientConnection = tcpServernextPendingConnection()。 if(!localFileopen((QFile::ReadOnly))){//以只讀方式打開 26 QMessageBox::warning(this,tr(應(yīng)用程序 ),tr(無法讀取文件 %1:\n%2).arg(fileName).arg(localFileerrorString()))。outBlock,QIODevice::WriteOnly)。/39。 ()seek(0)。 (0)。當(dāng)文件輸入完成后我們在使用 ()seek(0)。當(dāng)出現(xiàn)錯誤時發(fā)出 error()信號,我們執(zhí)行 displayError()槽函數(shù)。 connect(tcpClient,SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(displayError(QAbstractSocket::SocketError)))。 ()。 if(bytesReceived = sizeof(qint64)*2){ if((tcpClientbytesAvailable() = sizeof(qint64)*2) amp。 } if((tcpClientbytesAvailable() = fileNameSize) amp。 if(!localFileopen(QFile::WriteOnly)){ QMessageBox::warning(this,tr(應(yīng)用程序 ),tr(無法讀取文件 %1:\n%2.).arg(fileName).arg(localFileerrorString()))。 inBlock = tcpClientreadAll()。 uiprogressBarsetValue(bytesReceived)。f39。f39。 localFileclose()。其底層要經(jīng)過兩個步驟: 1, qmake 生產(chǎn) Makefile文件。 2, make 進行編譯,生成可執(zhí)行文件。當(dāng)客戶端同意接受后,用來表示傳輸進度的進度條會慢慢增長直至傳送完成,然后提示用戶退出。擁有很好的移植性。最后,參考了在網(wǎng)絡(luò)找到的聊天項目源代碼,邊翻看 PPT 講義,邊請教指導(dǎo)老師,才艱難的做了出來。 在做這個項目的過程中,遇到的最大問題是無法解決發(fā)生中文時出現(xiàn)亂碼的問題。 做完這個項目后,我深深地感到自己知識的貧乏和以前學(xué)習(xí)方法上的一些不足。 因此,我覺得在學(xué)習(xí) QT 時應(yīng)該不斷地做項目。在這四年里,有老師的幫助,同學(xué)的關(guān)心,父母姐妹的鼓勵,是他們的理解和支持讓我最終能完成我的本科學(xué)位,讓我更有信心邁向未來。老師嚴(yán)謹(jǐn)求實的治學(xué)態(tài)度、高度的敬業(yè)精神、兢兢業(yè)業(yè)的工作作風(fēng) , 將是伴隨我。 在論文的構(gòu)思和寫作過程中,葛明濤老師和龍斌老師給予了悉心的指導(dǎo),尤其在我遇到困難時,老師更是在精神上給了我極大的鼓勵和 支持。 學(xué)習(xí)是艱難的,但無論學(xué)什么,只要有持之以恒的精神,就沒有學(xué)不好的知識。課堂后又沒有復(fù)習(xí),導(dǎo)致一段時間后會遺忘部分的知識,到這次做項目時就要不斷的看講義。這也讓我認(rèn)識到 QT 的知識是多么博大精深,幾個月的學(xué)習(xí)是遠(yuǎn)遠(yuǎn)不夠的。在做這個項目的過程中,我更是明白了良好的大局思維對于一個開發(fā)人員來說有多么重要。實現(xiàn)資源共享是局域網(wǎng)聊天系統(tǒng)的一大優(yōu)勢,希望在后來的學(xué)習(xí)中,我能夠?qū)崿F(xiàn)局域網(wǎng)的資源共享。在用戶選擇好路徑之后,新的窗口會和服務(wù)器端類似,顯示傳輸?shù)倪M度。傳輸文件時,發(fā)送文件的一方為服務(wù)器端,接受文件的一方為客戶端, 服務(wù)器端和客戶端會開啟新的窗口。 Make工具最主要也是最基本的功能就是通過 makefile文件來描 述源程序之間的相互關(guān)系并自動維護編譯工作。本次測試采用 Ubuntu系統(tǒng),在該系統(tǒng)下安裝的Qt creator有利于程序的編譯及運行。//剩余時間 if(bytesReceived == TotalBytes) { tcpClientclose()。f39。 double speed = bytesReceived / useTime。 (0)。 } }else{ 28 return。 (fileNameSize != 0)){ infileName。 (fileNameSize == 0)){ inTotalBytesfileNameSize。 (QDataStream::Qt_4_6)。 tcpClientabort()。 27 tcpPort = 6666。 二 客戶端。而在服務(wù)器端,我們在發(fā)送數(shù)據(jù)時就 要首先發(fā)送實際文件的大小信息,但是,文件的大小一開始是無法預(yù)知的,所以我們先使用了 out(quint16) 0。 bytesToWrite = TotalBytes clientConnectionwrite(outBlock)。 sendOutqint64(0)qint64(0)currentFile。 ()。 } TotalBytes = localFilesize()。 uiserverStatusLabelsetText(tr(開始傳送文件 %1 ! ).arg(theFileName))。當(dāng)傳輸完畢后斷開連接。 當(dāng)服務(wù)器收到來自客戶端文件傳輸連接請求后,對其進行連接響 應(yīng)建立連接。我們在服務(wù)器端進行端口的監(jiān)聽,一旦發(fā)現(xiàn)客戶端的連接請求,就會發(fā)出信號,我們可以關(guān)聯(lián)這個信號到我們自己的槽函數(shù),進行數(shù)據(jù)的發(fā)送。 } } TCP 即 Transmission Control Protocol,傳輸控制協(xié)議。 uitextBrowsersetCurrentFont(QFont(Times New Roman,12))。 QString userName,localHostName,ipAddress,message。 QDataStream in(amp。 break。 } 發(fā)送消息前判斷消息的內(nèi)容是否為空或編輯的消息文本過長 . 24 if(uitextEdittoPlainText() == ) { QMessageBox::warning(0,tr(警告 ),tr(發(fā)送內(nèi)容不能為空),QMessageBox::Ok)。 消息通信流程如下圖 7 圖 7 消息通信流程 //獲得要發(fā)送的信息 QString Widget::getMessage() { QString msg = uitextEdittoHtml()。 listen 函數(shù) 函數(shù) listen 僅被 TCP 服務(wù)器調(diào)用,它做兩件事件: socket 創(chuàng)建一個套接口時,它被假設(shè)為一個主動套接口,也就是說,它是一個將調(diào)用 connect 發(fā)起連接的客戶套接口,函數(shù) listen 將未連接的套接口轉(zhuǎn)換成被動套接口,指示內(nèi)核應(yīng)接受指向此套接口的連接請求, int listen (int sockfd, int backlog)。返回:指向點分十進制數(shù)串的指針 套接口 TCP 編程: 執(zhí)行一個網(wǎng)絡(luò) I/O, 首先需要調(diào)用 socket 函數(shù)來創(chuàng)建一個套 接字。 通用套接口地址結(jié)構(gòu)
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1