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

正文內(nèi)容

linux下基于c語(yǔ)言開(kāi)發(fā)的即時(shí)通信軟件畢業(yè)設(shè)計(jì)-wenkub

2023-07-08 19:38:31 本頁(yè)面
 

【正文】 。特別是Internet在全球的推廣和應(yīng)用,對(duì)全世界科學(xué)、經(jīng)濟(jì)和社會(huì)產(chǎn)生了重大影響。而網(wǎng)絡(luò)通訊的出現(xiàn)又把全世界各個(gè)地方的人的距離拉得越來(lái)越近!隨著互聯(lián)網(wǎng)的普及,具有交互功能的應(yīng)用軟件日益受到親睞,尤其是即時(shí)通訊軟件ICS大受歡迎。如今,IM軟件正逐漸成為一個(gè)集合了文字、視頻、音頻業(yè)務(wù)以及多種增值業(yè)務(wù)的多媒體網(wǎng)絡(luò)通信軟件,憑借其所具有的廉價(jià)性和方便性,以及功能不斷完善,IM已經(jīng)和WWW、Email等一起成為網(wǎng)民們最喜愛(ài)的網(wǎng)絡(luò)服務(wù)之一。近年來(lái)公共互聯(lián)網(wǎng)上的即時(shí)通訊發(fā)展迅猛,并向著未來(lái)通信和協(xié)作的主要模式演化。它是一種使人們能在網(wǎng)上識(shí)別在線用戶并與他們實(shí)時(shí)交換消息的技術(shù)。 Fedora Core是眾多Linux發(fā)行套件之一。Red ,不再發(fā)布桌面版的,而是把這個(gè)項(xiàng)目與開(kāi)源社區(qū)合作,于是就有了Fedora 這個(gè) Linux 發(fā)行版。從發(fā)展的歷史看,數(shù)據(jù)庫(kù)是數(shù)據(jù)管理的高級(jí)階段,它是由文件管理系統(tǒng)發(fā)展起來(lái)的。T Bell Laboratories的Bjarne Stroustrup(即本文作者)設(shè)計(jì)和實(shí)現(xiàn)的,它兼具Simula語(yǔ)言在組織與設(shè)計(jì)方面的特性以及適用于系統(tǒng)程序設(shè)計(jì)的C語(yǔ)言設(shè)施。支持面向?qū)ο蟪绦蛟O(shè)計(jì)的語(yǔ)言設(shè)施在1983年被加入C++;之后,面向?qū)ο笤O(shè)計(jì)方法和面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)就逐漸進(jìn)入了C++領(lǐng)域。標(biāo)準(zhǔn)化工作由ANSI(American National Standard Institute)以及后來(lái)加入的ISO(International Standards Organization)負(fù)責(zé)。它既可以開(kāi)發(fā)GUI程式,也可用于開(kāi)發(fā)非GUI程式,比如控制臺(tái)工具和服務(wù)器。Qt Creator 和 Qt Qt SDK,包含了開(kāi)發(fā)跨平臺(tái)應(yīng)用程序所需的全部功能。 ICE中間件ZeroC,Inc開(kāi)發(fā)的Internet Communications Engine ,簡(jiǎn)稱Ice1。 ? 提供一種在網(wǎng)絡(luò)帶寬、內(nèi)存使用和 CPU 開(kāi)銷方面都很高效的實(shí)現(xiàn)。從根本上說(shuō),這意味著 Ice 為構(gòu)建面向?qū)ο蟮目蛻簦?wù)器應(yīng)用提供了工具、API 和庫(kù)支持。服務(wù)器端和客戶端之間使用TCP協(xié)議進(jìn)行通信。申請(qǐng)新用戶的功能。服務(wù)器端可以保存用戶的信息,同時(shí)將信息保存在文件和數(shù)據(jù)庫(kù)中。發(fā)送系統(tǒng)消息。服務(wù)器模型一般分為循環(huán)服務(wù)器和并發(fā)服務(wù)器,循環(huán)服務(wù)器一次只能處理一個(gè)連接,也就是說(shuō)同一時(shí)間只能由一個(gè)用戶連接到服務(wù)器進(jìn)行消息處理,這種情況是不被允許的。 錯(cuò)誤處理需求所有的應(yīng)用程序在運(yùn)行過(guò)程中都會(huì)出現(xiàn)出錯(cuò)的情況,這種錯(cuò)誤可能來(lái)自于程序本身的BUG也可能是用戶操作的失誤所造成的??蛻魴C(jī)/服務(wù)器模型也是一種網(wǎng)絡(luò)模型,它并不是定義了網(wǎng)絡(luò)的層次結(jié)構(gòu),而是描述了一種網(wǎng)絡(luò)程序運(yùn)行的方式。服務(wù)程序通常在一個(gè)眾所周知的地址監(jiān)聽(tīng)對(duì)服務(wù)的請(qǐng)求,也就是說(shuō),服務(wù)進(jìn)程一直處于休眠狀態(tài),直到一個(gè)客戶程序提出了請(qǐng)求信息。TCP傳輸層通過(guò)協(xié)議端口和應(yīng)用程序通信,也就是說(shuō),為了接收客戶請(qǐng)求,服務(wù)器程序必須對(duì)傳輸層的一個(gè)特定協(xié)議端口進(jìn)行偵聽(tīng)。它們提供服務(wù),響應(yīng)客戶請(qǐng)求。在這種情況下,客戶在啟動(dòng)操作時(shí)充當(dāng)客戶,而在接收操作完成通知時(shí)充當(dāng)服務(wù)器。例如,無(wú)連接和連接服務(wù)器程序必須在協(xié)議端口偵聽(tīng)客戶請(qǐng)求。無(wú)連接客戶程序使用數(shù)據(jù)報(bào)發(fā)送網(wǎng)絡(luò)服務(wù)請(qǐng)求,它不建立點(diǎn)到點(diǎn)連接。 Ice 應(yīng)用適合在異種環(huán)境中使用:客戶和服務(wù)器可以用不同的編程語(yǔ)言編寫(xiě),可以運(yùn)行在不同的操作系統(tǒng)和機(jī)器架構(gòu)上,并且可以使用多種網(wǎng)絡(luò)技術(shù)進(jìn)行通信。Ice 協(xié)議定義了: 一些消息類型,比如請(qǐng)求和答復(fù)類型; 協(xié)議狀態(tài)機(jī),確定客戶與服務(wù)器以怎樣的序列交換不同的消息類型,同時(shí)還包括相關(guān)的 TCP/IP 連接建立和關(guān)閉語(yǔ)義;編碼規(guī)則,確定在線路上怎樣表示數(shù)據(jù)的類型每種消息類型的頭,其中含有像這樣的細(xì)節(jié):消息類型、消息尺寸、所使用的協(xié)議及編碼版本。這意味著,消息交換機(jī)不需要對(duì)消息進(jìn)行任 何解編或重整編——它們可以簡(jiǎn)單地把消息當(dāng)作不透明的字節(jié)緩沖區(qū)加以轉(zhuǎn)發(fā)。但現(xiàn)實(shí)應(yīng)用需要的常常不止是遠(yuǎn)地通信能力:你通常還需要擁有這樣的能力:隨需啟動(dòng)服務(wù)器、把代理分發(fā)給客戶、分發(fā)異步事件、配置你的應(yīng)用、分發(fā)應(yīng)用補(bǔ)丁,等等。但讓服務(wù)成為平臺(tái)的一部分,你就可以專注于應(yīng)用開(kāi)發(fā),而不必先構(gòu)建許多基礎(chǔ)設(shè)施。系統(tǒng)界面美觀內(nèi)容豐富,很好的實(shí)現(xiàn)了服務(wù)器與用戶、用戶與用戶的交互。針對(duì)這些操作,服務(wù)器做了如下的模塊劃分:處理登陸信息模塊:檢查登陸信息是否正確,并向客戶端返回登陸信息。服務(wù)器功能示意圖:服務(wù)器端處理申請(qǐng)信息群發(fā)聊天信息處理登陸信息發(fā)布系統(tǒng)消息圖31 服務(wù)器功能示意圖 客戶端端功能模塊劃分客戶端主要負(fù)責(zé)處理用戶的操作信息,當(dāng)用戶做出相應(yīng)的動(dòng)作時(shí)客戶端應(yīng)該能夠及時(shí)地做出相應(yīng),當(dāng)GTK圖形程序檢測(cè)到鼠標(biāo)點(diǎn)擊時(shí),將觸發(fā)一個(gè)事件,對(duì)該事件進(jìn)行動(dòng)作的定義和函數(shù)的編寫(xiě)便可完成相應(yīng)的動(dòng)作。離線消息模塊:接收和發(fā)送離線消息,對(duì)離線消息進(jìn)行處理。獲取用戶名int Getusername (string name)。刪除好友int Delfriend(string name,string friname)。發(fā)送離線消息int Sendofflinemes(string recvername,string sendername,string message,string sendtime)。獲取系統(tǒng)消息數(shù)量 int Getsysnum()。用戶在線 int Loginser(string name)。因?yàn)槭嵌嗫蛻敉瑫r(shí)請(qǐng)求,所以要采用多線程,為每一個(gè)在線用戶分配一個(gè)線程,實(shí)時(shí)處理每個(gè)客戶端的請(qǐng)求。服務(wù)器運(yùn)行后即處于監(jiān)聽(tīng)狀態(tài),當(dāng)監(jiān)聽(tīng)到有連接請(qǐng)求時(shí)服務(wù)器進(jìn)入消息處理流程,因?yàn)榉?wù)器為并發(fā)服務(wù)器,所以可以同時(shí)對(duì)多個(gè)請(qǐng)求做出相應(yīng)。而對(duì)于客戶端,其主要的功能是實(shí)現(xiàn)用戶之間的通信,用穩(wěn)定的圖形化界面表示客戶端,以便直觀的進(jìn)行通信。當(dāng)用戶點(diǎn)擊離線用戶時(shí)便會(huì)觸發(fā)一個(gè)離線消息事件,該事件通過(guò)服務(wù)器轉(zhuǎn)發(fā)方式發(fā)送給離線用戶,當(dāng)對(duì)方上線時(shí)便可查看該離線消息。下圖為服務(wù)器和客戶端之間連接方式(ICE的C/S連接)的簡(jiǎn)圖:圖43 ICE下服務(wù)器和客戶端工作方式簡(jiǎn)圖 客戶端后臺(tái)工作方式簡(jiǎn)圖如下:圖44 客戶端后臺(tái)工作方式簡(jiǎn)圖 服務(wù)器端詳細(xì)設(shè)計(jì) 服務(wù)器端主體服務(wù)器主體函數(shù)主要涉及是創(chuàng)建兩個(gè)線程,一個(gè)是Server端線程,一個(gè)Clinet端線程。IceUtil::ThreadControl tct = ctstart()。在clientthread類的run方法中,通過(guò)代理調(diào)用相應(yīng)的接口函數(shù),加上選擇機(jī)制,可以完成服務(wù)器端的四個(gè)功能:從數(shù)據(jù)庫(kù)讀取用戶信息、從文件中讀取用戶信息、將用戶信息保存到數(shù)據(jù)庫(kù)中(當(dāng)有新用戶注冊(cè)時(shí))、用戶信息保存到文件中(當(dāng)有新用戶注冊(cè)時(shí))。用于訪問(wèn)屬性值的 API 小而簡(jiǎn)單,所以要在運(yùn)行時(shí)用它獲取屬性值很容易;這個(gè) API 還很靈活,如果有需要,它能讓你使用多個(gè)不同的屬性集和配置文件。獲取用戶頭像string Getfripic(string name)。將用戶信息寫(xiě)入文件int Writeofflinemesfile()。獲取消息message Getmessage(string recvername,string sendername)。獲取系統(tǒng)消息message Getsysmessage(string recvername)。 離線用戶 int Logoutser(string name)。登陸界面的設(shè)計(jì)是整個(gè)客戶端的切入點(diǎn),客戶端的整個(gè)設(shè)計(jì)都是在圖形界面下完成的。而嵌入式GUI具有下面幾個(gè)方面的基本要求:輕型、占用資源少、高性能、高可靠性、便于移植、可配置等特點(diǎn)。IP對(duì)應(yīng)的LineEdit響應(yīng)SaveIp函數(shù),用以保存Ip地址。}Port對(duì)應(yīng)的LineEdit響應(yīng)SavePort函數(shù),用以保存Port號(hào)。}‘OK’按鈕響應(yīng)響應(yīng)Loginuser函數(shù),目的是登陸服務(wù)器。string configfile = CONFIG_FILE。coutstrendl。}catch (const Ice::Exception amp。}同時(shí),若連接服務(wù)器成功,還應(yīng)彈出新窗口。} if (()==0) {QMessageBox::about(NULL, Port is NULL, Port is set 20000)。 icefun=getfuncpp()。 ()。 ()。 Logoutser()。UserName對(duì)應(yīng)的LineEdit響應(yīng)SaveName函數(shù),保存用戶姓名。}Password對(duì)應(yīng)的LineEdit響應(yīng)SavePassword函數(shù),保存密碼。}‘OK’按鈕響應(yīng)Logusr函數(shù),用戶登陸成功。return 0。return 1。}return 1。()。UserName對(duì)應(yīng) 的LineEdit響應(yīng)saveregistername函數(shù),保存需要注冊(cè)的用戶名稱。}Password對(duì)應(yīng)的LineEdit響應(yīng)saveregisterpwd函數(shù),用來(lái)保存注冊(cè)用戶的密碼,其實(shí)現(xiàn)如下:void Regist::saveregisterpwd(){QString qname。registerpic=()。return 。return 。該窗體提供一個(gè)初始化函數(shù)init,用于獲取好友列表,其實(shí)現(xiàn)如下:void chatmwindow::init(){chatwindicefunLoginser(username)。int i=0。it!=()。group[i]=new QTreeWidgetItem(uitreeWidget,0)。}}Widget提供兩種響應(yīng),‘單擊’和‘雙擊’。coutselname=selnameendl。fridialogusername=username。QString s=QString(())。}‘Add Friend’按鈕響應(yīng)addfriendfun函數(shù),添加好友,同時(shí)彈出添加好友的窗體。()。string savepic。group[i]=new QTreeWidgetItem(uitreeWidget,0)。其實(shí)現(xiàn)如下:void chatmwindow::delfriend(){if (!selfri) return。圖49 用戶窗體 添加好友窗體添加好友窗體:對(duì)已經(jīng)注冊(cè)的用戶可通過(guò)此窗體加為好友。}‘OK’按鈕響應(yīng)addwfriend函數(shù),用于添加好友。thisclose()。return 1。(QPalette::Window,QBrush(pixmap))。}添加好友窗體如下圖所示:圖410 添加好友窗體 對(duì)話窗體對(duì)話窗體:實(shí)現(xiàn)用戶之間的文本信息的發(fā)送。}兩個(gè)TextEdit用于顯示響應(yīng)的信息。QPixmap pixmap(./)。thissetMask(())。}char* frienddialog::currenttime(char* curtime, const char* format){struct tm ptm。ptm)。}void frienddialog::smessage(){QString strBuffer。cout()endl。if (chaticefunGetstat(friname)==0) QMessageBox::about(NULL,User is offline!,Send Offline Message)。string temptxt=./+username+.txt。fclose(fd)}void frienddialog::timerun(){message getmes。QString qmessage。uitextEditappend(qmessage)。fd=fopen(fname,at+)。}void frienddialog::timesrun(){message getmes。QString qmessage。uitextEdit_2append(qmessage)。服務(wù)器端對(duì)用戶信息的處理包括:從數(shù)據(jù)庫(kù)讀取用戶信息、從文件中讀取用戶信息、將用戶信息保存到數(shù)據(jù)庫(kù)中(當(dāng)有新用戶注冊(cè)時(shí))、用戶信息保存到文件中(當(dāng)有新用戶注冊(cè)時(shí))。char user[100]。fseek(fd,0,SEEK_END)。char tmp[1000]。name)。picpath)。,39。,39。res=0。return 0。res=0。if (res){coutSelect Errorendl。if (!res_ptr){coutStore Errorendl。fprintf(fd,%s ,())。圖412 數(shù)據(jù)庫(kù)截圖1圖413 數(shù)據(jù)庫(kù)截圖2執(zhí)行數(shù)據(jù)庫(kù)操作函數(shù)圖414 數(shù)據(jù)庫(kù)截圖3 數(shù)據(jù)庫(kù)操作后,向表中插入對(duì)應(yīng)項(xiàng)目圖415 數(shù)據(jù)庫(kù)截圖4上述過(guò)程演示了數(shù)據(jù)庫(kù)操作的工程,主要目的是對(duì)注冊(cè)的用戶信息進(jìn)行保存,將用戶信息保存后,在下次重新啟動(dòng)服務(wù)器后,服務(wù)器讀取數(shù)據(jù)庫(kù)中的信息,即可利用其中存在的信息。因此按照老師的要求我們先寫(xiě)了畢業(yè)設(shè)計(jì)任務(wù)書(shū),將設(shè)計(jì)目標(biāo)及預(yù)計(jì)實(shí)現(xiàn)的功能填入任務(wù)書(shū)中,同時(shí)將實(shí)現(xiàn)的功能模塊的工作任務(wù)順序?qū)懴聛?lái),明確今后的設(shè)計(jì)任務(wù),使得我們的設(shè)計(jì)及時(shí)的完成??蛻舳撕头?wù)器使用ICE中間件,客戶
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1