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

正文內(nèi)容

linux平臺下的聊天軟件的設(shè)計與開發(fā)—免費(fèi)畢業(yè)設(shè)計論文-文庫吧資料

2024-12-07 06:09本頁面
  

【正文】 用戶狀態(tài)為下線,同時調(diào)用發(fā)送聯(lián)系人狀態(tài)函數(shù)將標(biāo)志位設(shè)置為離線向該用戶的聯(lián)系人發(fā)送。 用戶聊天信息轉(zhuǎn)發(fā)的處理模塊: 當(dāng)服務(wù)器判斷用戶所請求的信息為聊天消息后,服務(wù)器會根據(jù)用戶所指定的聊天對象到 表中查找被指定用戶是否在線,如果被指定用戶在線則提取他的套接字地址結(jié)構(gòu),并按照該套接字信息將消息轉(zhuǎn)發(fā)。 添加好友信息處理模塊: 當(dāng)服務(wù)器收到用戶請求加好友的消息時,服務(wù)器首先在 中查找要被添加的用戶是否存在,如果該用戶存在則把該用戶的信息存儲到當(dāng)前用戶的好友文件中,同時在被添加好友的用戶的 表中保存當(dāng)前用戶的信息。 服務(wù)器消息處理模塊的設(shè)計與實(shí)現(xiàn) 服務(wù)器的消息處理模塊主要由 7 部分組成,下面進(jìn)行分別論述: 用戶登錄消息處理模塊: 當(dāng)服務(wù)器接收到用戶消息并判斷是登錄消息后,服務(wù)器將根據(jù)用戶所發(fā)送過來的用戶名和密碼到 表中進(jìn)行匹配,如果匹配成功則把該用戶加入到 表中,設(shè)置用戶在線狀態(tài)為真的同時調(diào)用發(fā)送聯(lián)系人在線列表函數(shù),向添加該用戶為好友的用戶發(fā)送該用戶的上線信息。 發(fā)送聯(lián)系人狀態(tài)函數(shù): void gif_send_clients_contact_list(chat *client_loginid,int client_sockfd, int type)該函數(shù)的主要 作用是當(dāng)用戶的在線狀態(tài)標(biāo)志發(fā)生變動時,服務(wù)器要及時地做出判斷,并向該用戶的聯(lián)系人發(fā)送該用戶狀態(tài)變更后的信息,以便對方能夠及時地了解到聯(lián)系人的狀態(tài)信息。 該函數(shù)中有 7 個主要消息處理模塊,這些模塊針對不同的客戶消息進(jìn)行處理,將他們組合在一起便形成了一套完整的消息處理機(jī)制。具體流程如下圖所示: 圖 46 管理 用戶流程圖 運(yùn)行用戶管理程序 添加用戶 顯示用戶 刪除用戶 退出程序 第 15 頁 共 26 頁 5 詳細(xì)設(shè)計 該部分詳細(xì)講述了服務(wù)器和客戶端的界面和代碼,直觀地對該軟件進(jìn)行設(shè)計說明,通過該部分將對軟件有一個全面的了解。當(dāng)用戶點(diǎn)擊離線用戶時便會觸發(fā)一個離線消息事件,該事件通過服務(wù)器轉(zhuǎn)發(fā)方式發(fā)送給離線用戶,當(dāng)對方上線時便可查看該離線消息。具體流程如下圖所示: 圖 43 服務(wù)器流程圖 客戶端操作流程 這款聊天軟件的客戶端采用圖形化用戶接口方式, GTK圖形界面的主要特點(diǎn)就是事件觸發(fā),當(dāng)處理引擎接收到某一窗體消息時,處理引擎就會按照事先編寫好的函數(shù)作相應(yīng)的處理動作,下圖總體上描述了客戶端軟件的操作處理流程: 第 13 頁 共 26 頁 圖 4- 4 客戶端操作流程圖 客戶端消息發(fā)送和接收流程 客戶端運(yùn)行后首先要用戶登錄到服務(wù)器,如果登陸成功服務(wù)器會將在線的用戶聯(lián)系人列表發(fā)送給客戶端,此 時客戶端即可顯示有哪些好友在線而哪些是離線的。 4 軟件流程 本節(jié)主要敘述了該軟件的整體運(yùn)作流程,包括服務(wù)器和客戶端對消息的處理等流程,通過本節(jié)將能夠?qū)浖墓ぷ髁鞒痰玫揭粋€總體的認(rèn)識。 unsigned int length。 char dateserial[20]。 }offline_msgs_t。 unsigned int new。 離線消息存儲時離線消息結(jié)構(gòu): typedef struct _offline_msgs_t { char sender[20]。 unsigned int status。 第 11 頁 共 26 頁 }user_contacts_t。 }online_users_t。 在線用戶信息結(jié)構(gòu): typedef struct _online_users_t { char loginid[20]。 char password[20]。 }gifhdr_t。 char receiver[10]。 unsigned int length。 配置信息模塊:提供基本的軟件配置操作。 聊天功能模塊:處理各種聊天信息,并判斷消息類型。因此,針對這些操作特性,將客戶端模塊進(jìn)行如下劃分: 登陸功能模塊:建立與服務(wù)器的連接并登陸,能顯 示登陸錯誤信息。 發(fā)布系統(tǒng)消息模塊:將用戶上下線的消息發(fā)給各客戶端,并改寫用戶在服務(wù)器端和客戶端的狀態(tài)。 處理聊天信息模塊:轉(zhuǎn)發(fā)消息給指定的用戶。就將在線用戶發(fā)給該用戶,并將該用戶的狀態(tài)發(fā)給各在線用戶。 接受來自客戶端的各種信息并分別處理。 總體設(shè)計方案 為實(shí)現(xiàn)網(wǎng)絡(luò)聊天的功能,該軟件采用 Socket 編程,服務(wù)器與客戶端采用了TCP/IP 方式連接,在設(shè)計聊天方案時,實(shí)行將所有信息發(fā)往服務(wù)器端,再由服務(wù)器進(jìn)行分別處理的思路,服務(wù)器端是所有信息的中心。采用 C/S結(jié)構(gòu)。 Socket 執(zhí)行體處理傳輸層內(nèi) UDP 軟件模塊和客戶程序之間的接口。與服務(wù)器程序一樣,無連接客戶程序也使用 bind 函數(shù)讓 Socket 執(zhí)行體登記協(xié)議端口。無連接客戶程序使用數(shù)據(jù)報發(fā)送網(wǎng)絡(luò)服務(wù)請求,它不建立點(diǎn)到點(diǎn)連接。 下面程序行顯示了一個典型的函數(shù)調(diào)用: result = bind ( socket_handle, local_structure socket_address, address_ length) 無連接客戶程序也對一個協(xié)議端口進(jìn)行偵聽。同樣,由于無連接客戶程序沒有和遠(yuǎn)地主機(jī)建立直接連接,所以它也必須對協(xié)議端口進(jìn)行偵聽,以便接收以對它服務(wù)請求產(chǎn)生的數(shù)據(jù)報應(yīng)答 。 使用無連接協(xié)議的程序和使用面向連接協(xié)議的服務(wù)器程序之間的主要相似之處是它們都必須對一個協(xié)議端口進(jìn)行偵聽。 Socket 執(zhí)行體接著告 訴傳輸層某個特定協(xié)議端口已被使用,并將其收到的所有數(shù)據(jù)傳送給 Socket API。當(dāng)服務(wù)器配置 socket 接口時,它使用 bind()函數(shù)讓 socket 執(zhí)行體登記一個協(xié)議端口。 當(dāng)建立服務(wù)器程序時,應(yīng)該將服務(wù)器程序設(shè)計成等候客戶的請求。此時,服務(wù)程序被 驚醒 并且為客戶提供服務(wù),對客戶的請求做出適當(dāng)?shù)姆磻?yīng)。在 TCP/IP 網(wǎng)絡(luò)應(yīng)用中,多數(shù)網(wǎng)絡(luò)應(yīng)用程序是使用客戶 /服務(wù)器模型設(shè)計的。 客戶及 /服務(wù)器模型將網(wǎng)絡(luò)應(yīng)用程序分為客戶和服務(wù)器兩部分。 3 程序設(shè)計方案 方案比較 采用 TCP 方式連接 TCP 方式連接的一個顯著特點(diǎn)就是需要有服 務(wù)器,這種類型的程序通常被稱為客戶機(jī) /服務(wù)器模式。 本章小結(jié) 需求是開發(fā)的前提,只有明確了需求才能開發(fā)出一個符合用戶期望的優(yōu)質(zhì)軟件。當(dāng)有錯誤發(fā)生時,我們應(yīng)該有一個很好的機(jī)制來保障錯誤能夠及時地被排除。 當(dāng)一個窗體出現(xiàn)問題時能夠及時的處理,讓主程序不受影響。 因此我們將采用多線程方式的并發(fā)服務(wù)器來設(shè)計服務(wù)器端,這樣將能從很大程度上提高服務(wù)器的運(yùn)行效率。 總體性能需求 服務(wù)器端性能需求 服務(wù)器需要同時連接很多個用戶,并能提供給這些連接用戶所需要的任務(wù)處理請求,這就要求服務(wù)器能同時處理多個 socket 連接。 客戶端程序可以 顯示在線好友。 客戶可以通過服務(wù)器轉(zhuǎn)發(fā),實(shí)現(xiàn)一對一 的 聊天 。 軟件功能需求 登錄功能。 2 軟件需求分析 為了開發(fā)出符合要求 的網(wǎng)絡(luò)聊天程序,首先必須知道使用者的需求。所以,開發(fā)一個網(wǎng)絡(luò)里的 C/S 通訊軟件是十分必要的。 用戶 可以用 GDB 來調(diào)試 C和 C++寫的程序。 改變程序。 保證程序在指定的條 件下停止 。 GDB 主要能做四件事 (包括為了完成這些事而附加的功能 ),幫助 用戶 找出程序中的錯誤。 gcc 是可以在多種硬體平臺上編譯出可執(zhí)行程序的超級編譯器,其執(zhí)行效率與一般的編譯器相比平均效率要高20%~30% gcc 編譯器能將 C、 C++語言源程序、匯程式化序和目標(biāo)程序編譯、連接成可執(zhí)行文件,如果沒有給出可執(zhí)行文件的名字, gcc 將生成一個名為 的文件。 Linux 發(fā)布版本中都提供了 C編譯器 gcc,它目前的版本是 。 C語言也更易移植,因而,在 Linux 下編程的最佳語言應(yīng)該是 C語言, Linux上的很多應(yīng)用程序就是用 C 語言寫的。也許這是以后桌面應(yīng) 用程序開發(fā)的一個方向。對于比較小型的項目,這種方法是比較適用的。 Glade 提供了一個類庫,在程序運(yùn)行的時候,它可以通過讀取 XML 文件而生成相應(yīng)的程序界面,從而達(dá)到了程序代碼邏輯與用戶界面的完全分離。 Glade 集成開發(fā)工具 簡介 Glade 是面向 GTK+/Gtkmm 的圖形界面開發(fā)工具。Gnome 的一些新特性,如 popt 參數(shù)分析,保存應(yīng)用程序設(shè)置等也是 Gtk+構(gòu)件所沒有的。雖然完全是用 C寫成的,但它仍然是用類和回調(diào)函數(shù) (指向函數(shù)的指針 )的方法實(shí)現(xiàn) 的。從本質(zhì)上來說, Gtk+構(gòu)件和 Gnome 構(gòu)件是完全類似的東西。一般把這些構(gòu)件稱為 Gnome 構(gòu)件 (與 Gtk+構(gòu)件相對應(yīng) )??梢杂盟鼈儊順?gòu)造非常豐富的用戶界面。 Gtk+圖形庫使用一系列稱為“構(gòu)件”的對象來創(chuàng)建應(yīng)用程序的圖形用戶接口。 第 4 頁 共 26 頁 Gtk+圖形開發(fā)庫 簡介 Gtk+(GIMP Toolkit, GIMP工具包 )是一個用于創(chuàng)造圖形用戶接口的圖形庫。旨在開發(fā)一個類似 Unix、并且是自由軟件的完整操作系統(tǒng): GNU 系統(tǒng)。以后借助于 Inter 網(wǎng)絡(luò),并經(jīng)過全世界各地計算機(jī)愛好者的共同努力下,現(xiàn)已成為今天世界上使用最多的一種UNIX 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長。通過將這 3個 參數(shù)結(jié)合起來,與一個 Socket 綁定,應(yīng)用層就可以和傳輸層通過套接字接口,區(qū)分來自不同應(yīng)用程序進(jìn)程或網(wǎng)絡(luò)連接的通信,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務(wù) 開發(fā)平臺簡介 Linux 系統(tǒng)簡介 Linux 操作系統(tǒng)是 UNIX 操作系統(tǒng)的一種克隆系統(tǒng)。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計算機(jī)操作系統(tǒng)為應(yīng)用程序與 TCP/ IP協(xié)議交互提供了稱為套接字 (Socket)的接口。 套接字簡介 應(yīng)用層通過傳輸層進(jìn)行數(shù)據(jù)通信時, TCP和 UDP 會遇到同時為多個應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問題。雖然 TCP 協(xié)議 中植入了各種 安全 保障功能,但是在實(shí)際執(zhí)行的過程中會占用大量的系統(tǒng)開銷,無疑使速度受到嚴(yán)重的影響。 既然 UDP 是一種不可靠的網(wǎng)絡(luò) 協(xié)議 ,那么還有什么使用價值或必要呢?其實(shí)不然,在有些情況下 UDP 協(xié)議 可能會變得非常有用。一個典型的數(shù)據(jù)報就是一個二進(jìn)制數(shù)據(jù)的傳輸單位。根據(jù) OSI(開放系統(tǒng)互連)參考模型, UDP 和 TCP 都屬于傳輸層 協(xié)議 。 UDP 協(xié)議 從問世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似 協(xié)議 所掩蓋,但是即使是在今天, UDP 仍然不失為一項非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層 協(xié)議 。 UDP 協(xié)議 簡介 UDP 協(xié)議 是英文 User Datagram Protocol 的縮寫,即用戶數(shù)據(jù)報 協(xié)議 ,主要用來支持那些需要在計算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。 全雙工操作: TCP 進(jìn)程能夠同時發(fā)送和接收包。 TCP 提供了有效流控制。 TCP 的可靠機(jī)制允許設(shè)備處理丟失、刪除及讀錯的包。 TCP 是面向連接的端到端的可靠協(xié)議 ,并保證傳送數(shù)據(jù)包的順序,而順序是用一個響應(yīng)序號來保證的,這個響應(yīng)序號告訴接收者發(fā)送者期望的下一個包。 關(guān)于數(shù)據(jù)流傳輸, TCP 發(fā)送一個由序列號定義的無結(jié)構(gòu)的字節(jié)流。為了可靠通信, TCP 在端點(diǎn)間建立了連接或虛擬電路。這一過程是通過使用 TCP 的 “ 端口號 ” 完成的。與 IP 協(xié)議相結(jié)合, TCP 代表了網(wǎng)絡(luò)協(xié)議的核心。 TCP 協(xié)議 簡介 因為我們這個程序所采用的是面向連接的 TCP 協(xié)議,所以我們這里就只對TCP(傳輸控制協(xié)議)這一 部分作詳細(xì)的介紹。所以,帶服務(wù)器的聊天軟件在
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1