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

正文內(nèi)容

即時通信系統(tǒng)的開發(fā)與設計畢業(yè)設計-預覽頁

2025-07-16 18:51 上一頁面

下一頁面
 

【正文】 利用兩端硬件環(huán)境的優(yōu)勢,將任務合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。客戶端完成數(shù)據(jù)處理,數(shù)據(jù)表示以及用戶接口功能;服務器端完成DBMS(數(shù)據(jù)庫管理系統(tǒng))的核心功能。對應的優(yōu)點就是客戶端響應速度快。運行數(shù)據(jù)庫服務器程序的機器,也稱為應用服務器。所有這些,對于工作在前臺程序上的最終用戶,是“透明”的,他們無須過問(通常也無法干涉)背后的過程,就可以完成自己的一切工作。這種方式遠程訪問需要專門的技術,同時要對系統(tǒng)進行專門的設計來處理分布式的數(shù)據(jù)。還有,系統(tǒng)軟件升級時,每一臺客戶機需要重新安裝,其維護和升級成本非常高。傳統(tǒng)的c/s體系結構雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級的開放性,在特定的應用中無論是Client端還是Server端都還需要特定的軟件支持。首先,采用C/S架構,要選擇適當?shù)臄?shù)據(jù)庫平臺來實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的真正“統(tǒng)一”,使分布于兩地的數(shù)據(jù)同步完全交由數(shù)據(jù)庫系統(tǒng)去管理,但邏輯上兩地的操作者要直接訪問同一個數(shù)據(jù)庫才能有效實現(xiàn),有這樣一些問題,如果需要建立“實時”的數(shù)據(jù)同步,就必須在兩地間建立實時的通訊連接,保持兩地的數(shù)據(jù)庫服務器在線運行,網(wǎng)絡管理工作人員既要對服務器維護管理,又要對客戶端維護和管理,這需要高昂的投資和復雜的技術支持,維護成本很高,維護任務量大。具有多線程能力的計算機因有硬件支持而能夠在同一時間執(zhí)行多于一個執(zhí)行緒,進而提升整體處理性能。這樣的程序運行機制被稱為軟件多線程。對稱多處理機(SMP)系統(tǒng)具有多個處理器,所以具有真正的同時執(zhí)行多個線程的能力;CMP技術通過在一塊芯片上集成多個核心也具有真正的多線程能力;CMT技術則稍有不同,有的是依靠硬件執(zhí)行線程切換來獲得多線程能力,操作系統(tǒng)不再負責線程切換,因而這部分開銷可以減少甚至消除,這方面典型的例子是Sun的UltraSPARCT1,它同時綜合了CMP和CMT。服務器端包含數(shù)據(jù)庫模塊和消息處理兩個模塊;數(shù)據(jù)庫模塊用于存儲用戶個人信息、用戶好友列表、和用戶連接信息;消息處理模塊包含查看好友資料、注冊處理、登錄處理、聊天處理、修改個人信息、添加好友、刪除好友。消息功能模塊:實現(xiàn)發(fā)送消息、接收消息、聊天記錄。安全性用戶需要服務器提供相關服務時需通過服務器的身份驗證來獲取相關服務。相關數(shù)據(jù)庫表如下:用戶信息表userinfo:名稱字段類型長度說明賬戶useridvarchar24Primary key ,not null密碼UserpwdVarchar24Not null昵稱userNickvarchar24Not null姓名userNamevarchar24Not null性別userSexvarchar24Not null年齡userAgeint 12Not null個人簽名iDiographvarchar48所在地cityvarchar24聯(lián)系方式phonenumbervarchar24在線狀態(tài)statusint12Other1Other2 Other3網(wǎng)絡連接表connectinfo:名稱字段類型長度說明賬戶(id)userIdvarchar24Primary key,not nullIp地址ipAddressvarchar24Not null端口Portint12Not null用戶登錄表friendtable:名稱字段類型長度說明當前賬戶userIdvarchar24Primary key,Not null賬號friendidvarchar24not null備注remarkvarchar24好友類型friendkindint12好友總數(shù)friendtotalint12昵稱nicknamevarchar24好友狀態(tài)statusint12 系統(tǒng)設計本系統(tǒng)由服務器先啟動??蛻舳诉B接信息存儲:客戶端登陸成功后將客戶端的賬號、ip地址以及端口號存入數(shù)據(jù)庫中的客戶端的連接信息表中,并將數(shù)據(jù)庫用戶信息表的中的用戶狀態(tài)置為1;當客戶端退出登錄時將客戶端的賬號、ip地址及端口號從數(shù)據(jù)庫中的連接信息表中刪除,并將數(shù)據(jù)庫中用戶信息表中的用戶狀態(tài)置為0。查看好友信息:服務器收到查看好友信息請求時,從數(shù)據(jù)庫中的用戶信息表中查詢好友信息,再將查詢的信息發(fā)送到對應的用戶。用戶注冊:客戶端在注冊界面填寫用戶注冊信息后在把填寫的信息發(fā)送給服務器。雙擊分組可以展開或收攏分組。查看好友資料:用戶在好友列表的好友信息一欄上點擊右鍵,選擇查看資料就可以發(fā)送查看好友資料的請求。聊天時有聊天窗體,聊天窗體包括與好友聊天的聊天記錄顯示,用戶發(fā)送聊天信息的發(fā)送編輯區(qū)域及與哪個好友聊天的標題。 服務器連接數(shù)據(jù)庫關鍵代碼: int main(int argc, char *argv[]){ QApplication a(argc, argv)。 (root)。 qDebug()()。 ()。 close()。 }}: 當服務器接收連接請求時通過套接字描述符創(chuàng)建一個單獨的通信線程,當客戶端失去連接時刪除該通信線程。 connect(mythread,SIGNAL(receiveChat(Messageamp。 mythreadstart()。)void登錄成功信號getFriendTable(Messageamp。 (UPDATE userinfo SET status = 0 WHERE userid = :userid)。 qDebug()client id sourceidhas disconnect。 qDebug()delete connectinfo table success。ListWidget類實現(xiàn)創(chuàng)建好友列表及好友中右鍵菜單欄顯示及相應功能的部分實現(xiàn)。friendInfoForm類實現(xiàn)好友信息顯示界面的創(chuàng)建。)void創(chuàng)建聊天界面信號Form類主要槽及信號:槽及主要成員函數(shù)返回值功能createFriendchatSlot(chatwithFriend amp。msg)void開始聊天信號chatForm類主要信號和槽:槽及主要函數(shù)返回值功能PUSH_SEND_BUTTON()void發(fā)送聊天消息主要功能截圖及關鍵代碼客戶端登錄界面關鍵代碼:void Widget::loginrequest(){ if(!tcpsocketUnconnectedState) { // tcpsocketabort()。 =uipwdlineEdittext()。 } }: 客戶端登錄界面注冊界面關鍵代碼:void registerForm::submitslot(){ if(uiuseridEdittext().isEmpty()amp。 QMessageBox::about(this,錯誤,賬號和密碼不能為空)。 =uicitylineEdittext()。 =uiuseridEdittext()。 emit registerSignals(msg)。 //三個好友列表 friendlist1=new ListWidget。 imagelabel=new QLabel。 nicklabelsetText(昵稱:)。 vlayout1addWidget(useridlabel)。 hlayout1addLayout(vlayout1)。 groupbox2=new QGroupBox。 groupbox2setStyleSheet(border:none)。 hlayout3addWidget(addfriendButton)。 groupbox3=new QGroupBox。 vlayout2addWidget(groupbox1)。 //好友分類列表 toolboxaddItem(friendlist1,我的好友)。//我的好友 friendlist2=BESTFRIENT。 thissetMinimumSize(300,650)。 //thissetWindowFlags(Qt::FramelessWindowHint)。 qDebug()**********************************。 thisport=。 //此處的bind是個重載函數(shù),連接本機的port端口,采用ShareAddress模式(即允許其它的服務連接到相同的地址和端口,特別是 //用在多客戶端監(jiān)聽同一個服務器端口等時特別有效),和ReuseAddressHint模式(重新連接服務器) //connect(udpSocket, SIGNAL(readyRead()), this, SLOT(processPendingDatagrams()))。 if(i==0) { =MYFRIENT。 //好友id不能為空; if(!()) { qDebug()msg_。 } else { QMessageBox::about(this,好友添加,好友信息不能為空!?。?。 uinicknamelineEditsetText()。 uiphonelineEdit_6setText()。 QString accid。 QHostAddress peerIp。 qDebug()********************************。peerPort)。 insizemsgType。 qDebug()msgType ismsgType。 =()。 qDebug()sender:friendidreceiver:useridmsg text:sendText。 } chatformshow()。 chatformdisplayChatMsg(str)。 qDebug()has push send button,...。 QDataStream out(amp。 qDebug()userid isthisuserid。 out (quint16)(() sizeof(quint16))。 str=thisuserid+ say:。 } uiinputtextEditclear()。黑盒測試是在程序接口上進行測試,主要是為了發(fā)現(xiàn)以下錯誤:是否有不正確或者是遺漏了的功能,在接口上,輸入能否正確的接受,能否輸出正確的結果;是否有數(shù)據(jù)結構錯誤或者外部信息訪問錯誤;性能上是否滿足要求;是否有初始化或終止性錯誤;用黑盒測試發(fā)現(xiàn)程序中的錯誤,必須在所有可能的輸入條件和輸出條件中確定測試數(shù)據(jù),來檢查程序是否都能產(chǎn)生正確的結果。對所有的邏輯判定,取真和取假的兩種情況都至少測試一次。測試系統(tǒng)部分功能測試行為測試結果正常開啟服務器點擊啟動服務器服務器界面顯示本地ip和端口號,調(diào)試信息顯示數(shù)據(jù)庫打開成功客戶端登錄服務器在客戶端輸入賬戶:admin密碼:admin數(shù)據(jù)庫中connectinfo表中多了一條admin的連接信息,并且用戶表中admin的狀態(tài)為1.出現(xiàn)主界面并正常顯示好友列表及用戶的基本信息。當然在其他功能模塊的調(diào)試過程中,也遇到過一系列代碼上的問題導致系統(tǒng)不能正常運行,大部分原因都是代碼邏輯錯誤,函數(shù)引用錯誤,語法結構缺失等問題;通過在qtcreator斷點調(diào)試及自己添加相應的輸出語句,在調(diào)試欄查看變量的實時信息,及錯誤的提示信息就可以很容易的找出問題并且改正。攀枝花學院本科畢業(yè)設計(論文) 總結總 結經(jīng)過大半學期的緊張的畢業(yè)設計,基于局域網(wǎng)的即時通信聊天系統(tǒng)基本完成,系統(tǒng)基本功能基本實現(xiàn)、測試、調(diào)試也基本運行正常。雖然大學選修過qt相關的課題,但由于之前學過c/c++、java、c這一系列的編程語言,讓我在qt語法和界面的學習時沒有想象中的那么難了。對tcp協(xié)議和udp協(xié)議的優(yōu)缺點有了更深的了解。不過幸好及時的發(fā)現(xiàn)這一問題。通過本次畢業(yè)設計讓我深深的了解到光知道書本上的知識是遠遠不夠的,一定要把理論知識和實踐結合起來,要做到理論聯(lián)系實踐。深刻的了解查詢資料和閱讀相關文獻的重要性、學習專業(yè)知識的重要性、向同學和老師學習的重要性;學習到了對待任何事情都要有耐心和恒心,遇到問題要冷靜的思考,將問題化整為零,逐一解
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1