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

正文內(nèi)容

畢業(yè)設(shè)計論文-linux平臺下的聊天軟件的設(shè)計與開發(fā)(參考版)

2024-12-07 17:55本頁面
  

【正文】 除非另有科研合同和其他法律文書 的制約,本論文的科研成果屬于成都信息工程學(xué)院。 ( 4)學(xué)??稍试S學(xué)位論文被查閱或借閱。 ( 2)學(xué)校可以采用影印、縮印或其他復(fù)制方式保存學(xué)位論文。 本文是在 李曉崗老師和 茍智堅 老師的熱情關(guān)心和指導(dǎo)下完成的,他 們 淵博的知識和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對順利完 成本課題起到了極大的作用。文中除了特別加以標(biāo)注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機構(gòu)的學(xué)位或證書而使用過的材料。 [7]Arthur Griffith [美 ]. GNOME/GTK + Programming Bible[M].西安:機械工業(yè)出版社 ,2021。 [5]許宏松 .Linux應(yīng)用程序開發(fā)指南:使用 GTK+/GNOME庫 [M].西安: 機械工業(yè)出版社 , 2021。 [3] Stevens[美 ].UNIX 網(wǎng)絡(luò)編程 (卷 2:進程間通信 )第二版 [M].北京: 清華大學(xué)出版社 , 2021。 第 25 頁 共 27 頁 參考文獻 [1] Stevens[美 ].TCP/IP詳解 卷 1:協(xié)議 [M].西安: 機械工業(yè)出版社 , 2021。 作為大學(xué)四年學(xué)習(xí)成果的總結(jié),設(shè)計和編寫這樣一個軟件 能夠?qū)⑺鶎W(xué)過的知識綜合運用,并在實踐中得到提高,達到了預(yù)期的總結(jié)并檢驗學(xué)習(xí)成果目的 ??蛻舳藞D形界面效果良好,使用起來也簡單易用。 這款軟件目前所具備的功能已經(jīng)能夠滿足日常的聊天需求。 通過對本章的 分析理 解將會對整個軟件 的設(shè)計模式 和編寫流程 有一個比較深入的了解。 以上的幾大模塊構(gòu)成了客戶端功能處理的主體,大部分的操作和消息處理都是由這些模塊來完成的。 消息請求成功或失敗信息: 如果接收到了 GIF_SUCCESS_N_ERROR_MSG 類型的消息,則程序還會進一步的根據(jù) 另外一個標(biāo)識符判斷是何種系統(tǒng)消息,并通過系統(tǒng)消息窗口顯示給用戶。 聊天信息: 當(dāng)接收服務(wù)器發(fā)送的消息的類型為 GIF_CHAT_MSG 時,程序首先要確定是誰發(fā)出的聊天請求,然后判斷聊天窗口是否開啟,如果未開啟則將開啟標(biāo)識設(shè)為真,然后打開聊天窗口。 該模塊主要處理以下幾種消息類型: 第 24 頁 共 27 頁 更新 聯(lián)系人列表信息: 當(dāng)判斷接收到的消息為 GIF_ADDRLIST_MSG 時,程序?qū)β?lián)系人視圖進行刷新以便及時的顯示聯(lián)系人的當(dāng)前狀態(tài)。 通過以上兩個函數(shù),便可以在視圖中創(chuàng)建新的顯示行。parent_iter, NULL) 設(shè)置新添加行的值 gtk_tree_store_set (store, amp。 通過以上 3 個步驟一個視圖中就有了列,在進行相同的操作可創(chuàng)建多個列值,在用戶聯(lián)系人視圖中只建了兩個列分別顯示 聯(lián)系人姓名和聯(lián)系人狀態(tài)。 給列添加新的屬性, STATUS_COLUMN_PIXMAP 指定了行信息, ” pixbuf” 指定了繪制類型 為圖像, renderer 指定了繪制方式 column = gtk_tree_view_column_new_with_attributes (Status, renderer, pixbuf, STATUS_COLUMN_PIXMAP, NULL)。 通過以上的 3 個步驟,就會在容器中生成一個可供用戶查看的滾動視圖。 新建一個管理視圖 tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store))。 界面顯示模塊: 當(dāng)用戶成 功登陸后,在聯(lián)系人列表中將會顯示用戶的聯(lián)系人信息,在離線消息窗口中會顯示接收到的離線消息 ,這兩個視圖均是用列表視圖來實現(xiàn)的。 如果登陸成功,則 創(chuàng)建線程來維護和服務(wù)器的連接。當(dāng)用戶點擊登陸后,系統(tǒng)將用戶輸入的 IP地址寫入 Socket 地址結(jié)構(gòu),然后對套接口地址結(jié)構(gòu)進行綁定。 客戶端功能模塊的設(shè)計 與實現(xiàn) 用戶認(rèn)證模塊: 主要用到的函數(shù) 為: connect(), send(), pthread_create() 當(dāng)用戶啟動程序后首先需要用戶登陸到服務(wù)器才能進一步的對軟件進行操作,這一部分即為用戶認(rèn)證模塊。 gtk_widget_show(create_msgbox(error, Server Disconnected))。 在系統(tǒng)調(diào)用線程時為保證線程安全,需要前后分別調(diào)用 gdk_threads_enter ()和 gdk_threads_leave ()函數(shù)。 Void gif_receive_messages(int server_sockfd): 處理從服務(wù)器端發(fā)送過來的消息,根據(jù)信息包所攜帶的消息類型信息選擇消息處理模塊。 上面的枚 舉類型定義了用戶離線消息查看窗口中的列標(biāo)識。 上面的枚舉類型定義了用戶聯(lián)系人視窗中的列標(biāo)識。 GtkCellRenderer *renderer:定義一個數(shù)據(jù)表現(xiàn)形式 繪制類型 。 GtkTreeIter offline_selected_iter: 定義一個查詢離線消息的迭代器。 客戶 端 主要 函數(shù) 和變量 GtkWidget *tree:用于顯示客戶端聯(lián)系人列表的樹視圖 GtkWidget *offline_tree:用于顯示離線消息的樹視圖 GtkWidget *chat_window[100]:用于保存聊天窗體的編號 。 圖 412 聊天窗口 紅色顯示的是用戶自身,藍色為聯(lián)系人。 離線消息可以查看當(dāng)用戶不在線時,有哪些用戶向該用戶發(fā)送了離線消息。 在相關(guān)的函數(shù)內(nèi)將該窗口的激活屬性打開,消息窗口便會自動的彈出并顯示消息。 需要填寫信息: Server ip:填寫服務(wù)器地址 User id: 填寫用戶名 Password :填寫密碼 點擊按鈕 的消息事件: Cancel:退出當(dāng)前窗口 Clear:清空填寫的信息 OK:觸發(fā) on_butOk_clicked 函數(shù) 該函數(shù)用于連接服務(wù)器并同服務(wù)器進行信息的發(fā)送與接收 圖 48 登錄窗口 添加用戶窗口: 當(dāng)用戶電擊主窗口中的 Add 按鈕時該窗體被激活。 主窗體:該窗體中包含了所有的用戶操作按鈕和好友列表,用戶的操作都在這個窗體中完成。 離線消息存儲文件: 該文件中保存了 其它用戶發(fā)給當(dāng)前用戶的離線消息。 用戶擁有好友文件: 該文件中保存了當(dāng)前用戶所添加的好友信息。 服務(wù)器上主要存放 5類用戶信息文件: 用戶信息數(shù)據(jù)文件: 該文件中保存了用戶的 loginid 和 password。之所以采用這種發(fā)式是因為該服務(wù)器作為一個小型的聊天軟件的服務(wù)器,本身所要求保存的數(shù)據(jù)量并不大,且用戶數(shù)量也是比較有限的,在這種情況下采用文件方式對信息進行讀取在速度和開銷上都要有一些優(yōu)勢 ,且便于管理員管理用戶。 刪除離線消息處理模塊: 如果客戶 做出 了刪除離線消息的動作, 那么服 務(wù)器端將會根據(jù)用戶的發(fā)送信息把該用戶的離線消息文件中的離線消息刪除。 用戶下線消息處理模塊: 當(dāng)服務(wù)器判斷用戶所請求的信息為下線消息后 ,服務(wù)器將把 用戶 從 中刪除,設(shè)置該用戶狀態(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ā)。 添加好友信息處理模塊: 第 17 頁 共 27 頁 當(dāng)服務(wù)器收到用戶請求加好友的消息時,服務(wù)器首先在 中查找要被添加的用戶是否存在,如果該用戶存在則把該用戶的信息存儲到當(dāng)前用戶的好友文件中,同時在被 添加好友的用戶的 表中保存當(dāng)前用戶的信息。 服務(wù)器 消息 處理 模塊的設(shè)計 與實現(xiàn) 服務(wù)器的消息處理模塊主要由 7 部分組成 ,下面進行分別論述: 用戶登錄消息處理模塊: 當(dāng)服務(wù)器 接收到用戶消息并判斷是登錄消息后,服務(wù)器將根據(jù)用戶所發(fā)送過來的用戶名和密碼到 表中進行匹配,如果匹配成功則把該用戶加入到 表中,設(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 個主要消息處理模塊,這些模塊針對不同的客戶消息進行處理,將他們 組合在一起 便形成了一套完整的 消息處理機制。 具體流程如下圖所示: 圖 46 管理 用戶流程圖 運行用戶管理程序 添加用戶 顯示用戶 刪除用戶 退出程序 第 16 頁 共 27 頁 詳細(xì)設(shè)計 該部分詳細(xì)講述了服務(wù)器和客戶端的界面和代碼,直觀地對該軟件進行設(shè)計說明,通過該部分將對軟件有一個全面的了解。當(dāng)用戶點擊離線用戶時便會觸發(fā)一個離線消息事件,該事件通過服務(wù)器轉(zhuǎn)發(fā)方式發(fā)送給離線用戶,當(dāng)對方上線時便可查看該離線消息。 具體流程如下圖所示: 圖 43 服務(wù)器流程圖 客戶端操作 流程 這款聊天軟件的客戶端采用圖形化用戶接口方式, GTK圖形界面的主要特點就是事件觸發(fā),當(dāng)處理引擎接收到某一窗體消息時,處理引擎就會按照事先編寫好的函數(shù)作相應(yīng)的處理動作,下圖總體上描述了客戶端軟件的操作處理流程: 第 14 頁 共 27 頁 圖 4- 4 客戶端操作流程圖 客戶端 消息 發(fā)送 和接收 流程 客戶端運行后首 先要用戶登錄到服務(wù)器,如果登陸成功 服務(wù)器會將在線的用戶聯(lián)系人列表發(fā)送給客戶端,此時客戶端即可顯示有哪些好友在線而哪些是離線的。 軟件流程 本節(jié)主要敘述了該軟件的整體運作流程,包括服務(wù)器和客戶端對消息的處理等流程,通過本節(jié)將能夠?qū)浖墓ぷ髁鞒痰玫揭?個總體的認(rèn)識。 unsigned int length。 char dateserial[20]。 }offline_msgs_t。 unsigned int new。 離線消息存儲時離線消息結(jié)構(gòu): 第 12 頁 共 27 頁 typedef struct _offline_msgs_t {
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1