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

正文內(nèi)容

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

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

下一頁面
 

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