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

正文內(nèi)容

畢業(yè)設計論文-linux平臺下的聊天軟件的設計與開發(fā)-資料下載頁

2025-11-24 17:55本頁面

【導讀】如今互聯(lián)網(wǎng)技術高度發(fā)達,網(wǎng)絡帶給人們的方便不言而喻。為一種開銷低且方便快捷的通訊手段,被越來越多的人所使用。文章主要分為四個部分,第一部分主要分析了該類產(chǎn)品的。一個發(fā)展過程和開發(fā)此類軟件的背景及意義。在此基礎上,進一步的分析了該類。產(chǎn)品的需求情況。在第三章中詳細的介紹了所選取的開發(fā)環(huán)境,因為這一套開發(fā)。會對該類軟件的開發(fā)流程有一個總體的認識。之后,在通過對預備方案的分析和??偨Y(jié)后,最終確定設計路線。細的劃分和設計,并且運用各種圖表清晰的展現(xiàn)了軟件的模塊信息和總體結(jié)構(gòu)。軟件的預期效果在這一章節(jié)中得到了體現(xiàn),完成效果符合前期的需求分析。最后總結(jié)了該軟件開發(fā)的不足之處,還有軟件需要完善的部分。

  

【正文】 : char *gif_get_system_time() 該函數(shù)取出當前系統(tǒng)時間并隨消息一同發(fā)出,以便讓用戶能更好的了解到消息是何時發(fā)出的。 服務器 消息 處理 模塊的設計 與實現(xiàn) 服務器的消息處理模塊主要由 7 部分組成 ,下面進行分別論述: 用戶登錄消息處理模塊: 當服務器 接收到用戶消息并判斷是登錄消息后,服務器將根據(jù)用戶所發(fā)送過來的用戶名和密碼到 表中進行匹配,如果匹配成功則把該用戶加入到 表中,設置用戶在線狀態(tài)為真的同時調(diào)用發(fā)送聯(lián)系人在線列表函數(shù),向添加該用戶為好友的用戶發(fā)送該用戶的上線信息。如果匹配不成功,服務器將發(fā)送登錄失敗消息給客戶端,要求用戶重新登錄。 添加好友信息處理模塊: 第 17 頁 共 27 頁 當服務器收到用戶請求加好友的消息時,服務器首先在 中查找要被添加的用戶是否存在,如果該用戶存在則把該用戶的信息存儲到當前用戶的好友文件中,同時在被 添加好友的用戶的 表中保存當前用戶的信息。 刪除好友信息處理模塊: 當服務器接收到用戶的該消息請求時,服務器根據(jù)用戶所提供的好友用戶名來刪除被指定的好友,同時將用戶聯(lián)系人表進行更新,在被刪除的好友的被添加好友表 中將當前用戶刪除。 用戶聊天信息轉(zhuǎn)發(fā)的處理模塊: 當服務器判斷用戶所請求的信息為聊天消息后,服務器會根據(jù)用戶所指定的聊天對象到 表中查找被指定用戶是否在線,如果被指定用戶在線則提取他的套接字地址結(jié)構(gòu),并按照該套接字信息將消息轉(zhuǎn)發(fā)。 如果用戶不在線則將消息標識設定為離 線消息,并將該消息寫入被指定用戶的離線消息文件中。 用戶下線消息處理模塊: 當服務器判斷用戶所請求的信息為下線消息后 ,服務器將把 用戶 從 中刪除,設置該用戶狀態(tài)為下線,同時調(diào)用發(fā)送聯(lián)系人狀態(tài)函數(shù)將標志位設置為離線向該用戶的聯(lián)系人發(fā)送。 離線消息處理模塊: 當服務器判斷用戶所請求的信息為讀取離線消息后,服務器會去讀用戶的離線消息文件,如果該文件中有被標識為新的離線消息時,服務器將把該消息提取出來發(fā)送給用戶,同時把該消息標識為已讀。 刪除離線消息處理模塊: 如果客戶 做出 了刪除離線消息的動作, 那么服 務器端將會根據(jù)用戶的發(fā)送信息把該用戶的離線消息文件中的離線消息刪除。 服務器數(shù)據(jù)存儲的方法 該服務器采用文件作為數(shù)據(jù)存儲的對象。之所以采用這種發(fā)式是因為該服務器作為一個小型的聊天軟件的服務器,本身所要求保存的數(shù)據(jù)量并不大,且用戶數(shù)量也是比較有限的,在這種情況下采用文件方式對信息進行讀取在速度和開銷上都要有一些優(yōu)勢 ,且便于管理員管理用戶。 在編程時主要使用 fopen fread fwrite fclose 等函數(shù)對文件進行操作,被打開文件的操作權(quán)限由 fopen 的參數(shù)來決定,讀取控制由 fread 來完成, fwrite主要負責向文件 中 寫入新的信息。 服務器上主要存放 5類用戶信息文件: 用戶信息數(shù)據(jù)文件: 該文件中保存了用戶的 loginid 和 password。 第 18 頁 共 27 頁 在線用戶數(shù)據(jù)文件: 該文件中保存了當前在線用戶的 loginid 和 socket 信息。 用戶擁有好友文件: 該文件中保存了當前用戶所添加的好友信息。 被添加為好友文件: 該文件中保存了有哪些用戶把當前用戶添加為好友。 離線消息存儲文件: 該文件中保存了 其它用戶發(fā)給當前用戶的離線消息。 客戶端主要窗口設計 根據(jù)前面的選題背景和需求分析,此款軟件的客戶端部分提供了圖形用戶界面, 程序運行后激活主窗體 ,在主窗體上點擊設置為敏感狀態(tài)的按鈕就會產(chǎn)生相應的事件,該事件將會觸發(fā)一個消息驅(qū)動所指定的函數(shù)來處理這個操作。 主窗體:該窗體中包含了所有的用戶操作按鈕和好友列表,用戶的操作都在這個窗體中完成。 圖 47 程序主窗口 窗體中包含按鈕: Conn:登陸按鈕,點擊可激活登錄窗口 第 19 頁 共 27 頁 Add: 添加好友按鈕 Conf:程序配置按鈕 Offline:查看離線消息按鈕 Conn 菜單:包含 Conn、 Disconnect 和 Quit 按鈕 Contacts 菜單:包含 Add、 Delete 和 Offline 按鈕 Help 菜單:包含 About 按鈕 聯(lián)系人列表: Status 列:顯示聯(lián)系人狀態(tài)信 Contacts 列:顯示好友列表 Available 顯示表示用戶有好友 當用戶無好友時顯示 Not Available 登錄窗口: 當用戶點擊主窗口中的 Conn 按鈕時,該窗體被激活。 需要填寫信息: Server ip:填寫服務器地址 User id: 填寫用戶名 Password :填寫密碼 點擊按鈕 的消息事件: Cancel:退出當前窗口 Clear:清空填寫的信息 OK:觸發(fā) on_butOk_clicked 函數(shù) 該函數(shù)用于連接服務器并同服務器進行信息的發(fā)送與接收 圖 48 登錄窗口 添加用戶窗口: 當用戶電擊主窗口中的 Add 按鈕時該窗體被激活。 第 20 頁 共 27 頁 Contact’ s id:填寫要添加的好友的 loginid 號 OK: GIF_ADD_CONTACTS_MSG 同時向服務器發(fā)送消息請求 圖 49 添加好友窗口 系統(tǒng)消息窗口: 當用戶的操作成功或者失敗的時候,系統(tǒng)會顯示一條消息給用戶,以便提示用戶操作是否 成功。 在相關的函數(shù)內(nèi)將該窗口的激活屬性打開,消息窗口便會自動的彈出并顯示消息。 圖 410 系統(tǒng)消息窗口 離線消息窗口: 當用戶點擊主窗口中的 Offline 按鈕時,該窗體被激活。 離線消息可以查看當用戶不在線時,有哪些用戶向該用戶發(fā)送了離線消息。 圖 411 離線消息窗體 聊天窗口: 第 21 頁 共 27 頁 當用戶點擊好友時,該窗口被激活。 圖 412 聊天窗口 紅色顯示的是用戶自身,藍色為聯(lián)系人。 上面的窗體是客戶端用戶在使用中會經(jīng)常使用到的一些窗口事件,這些部件統(tǒng)一起來便形成了一套完整的客戶端圖形用戶界面。 客戶 端 主要 函數(shù) 和變量 GtkWidget *tree:用于顯示客戶端聯(lián)系人列表的樹視圖 GtkWidget *offline_tree:用于顯示離線消息的樹視圖 GtkWidget *chat_window[100]:用于保存聊天窗體的編號 。 GtkListStore *offline_temp_store:定義一個 離線消息 數(shù)據(jù)管理類型 。 GtkTreeIter offline_selected_iter: 定義一個查詢離線消息的迭代器。 GtkTreeModel *offline_selected_model: 定義離線消息查詢數(shù)據(jù)管理接口 。 GtkCellRenderer *renderer:定義一個數(shù)據(jù)表現(xiàn)形式 繪制類型 。 enum { CONTACTS_COLUMN_TEXT, STATUS_COLUMN_PIXMAP }。 上面的枚舉類型定義了用戶聯(lián)系人視窗中的列標識。 enum 第 22 頁 共 27 頁 { OFFLINE_NEW_PIXMAP, OFFLINE_SENDER_TEXT, OFFLINE_DATESERIAL_TEXT, OFFLINE_MSG_TEXT, OFFLINE_COLUMNS }。 上面的枚 舉類型定義了用戶離線消息查看窗口中的列標識。 gtk_widget_set_sensitive(widget, TRUE):設置指定控件的敏感度 TRUE 可以點擊 FALSE 則不能點擊 。 Void gif_receive_messages(int server_sockfd): 處理從服務器端發(fā)送過來的消息,根據(jù)信息包所攜帶的消息類型信息選擇消息處理模塊。 void gif_call_client_for_chat(GtkTreeSelection *selection, gpointer data): 當用 戶點擊聯(lián)系人時 會 產(chǎn)生 一個 消息事件, 程序 根據(jù)用戶所選擇的聯(lián)系人 生成聊天窗口,并對該窗體進行初始化。 在系統(tǒng)調(diào)用線程時為保證線程安全,需要前后分別調(diào)用 gdk_threads_enter ()和 gdk_threads_leave ()函數(shù)。 例如: gdk_threads_enter()。 gtk_widget_show(create_msgbox(error, Server Disconnected))。 gdk_threads_leave()。 客戶端功能模塊的設計 與實現(xiàn) 用戶認證模塊: 主要用到的函數(shù) 為: connect(), send(), pthread_create() 當用戶啟動程序后首先需要用戶登陸到服務器才能進一步的對軟件進行操作,這一部分即為用戶認證模塊。 該模塊 在登陸窗口 中 收集服務器的 IP 地址和用戶的用戶名和密碼。當用戶點擊登陸后,系統(tǒng)將用戶輸入的 IP地址寫入 Socket 地址結(jié)構(gòu),然后對套接口地址結(jié)構(gòu)進行綁定。 同時將用戶名寫入消息頭結(jié)構(gòu)體,并將密碼隨同數(shù)據(jù)字段一起發(fā)送給服務器。 如果登陸成功,則 創(chuàng)建線程來維護和服務器的連接。之后, 程序進入主體運行狀態(tài),各功能模塊被激活。 界面顯示模塊: 當用戶成 功登陸后,在聯(lián)系人列表中將會顯示用戶的聯(lián)系人信息,在離線消息窗口中會顯示接收到的離線消息 ,這兩個視圖均是用列表視圖來實現(xiàn)的。 第 23 頁 共 27 頁 用戶列表 和離線消息列表 的構(gòu)建是通過 下面的 函數(shù)來實現(xiàn)的: 新建一個數(shù)據(jù)的存儲 模型 store= gtk_tree_store_new (2, G_TYPE_STRING, GDK_TYPE_PIXBUF)。 新建一個管理視圖 tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store))。 將視圖添加到指定的容器中 gtk_container_add (GTK_CONTAINER (scrolledwindow1), tree)。 通過以上的 3 個步驟,就會在容器中生成一個可供用戶查看的滾動視圖。 但這個視圖中并沒有定義列信息,業(yè)就是說這是一個空的無任何用處的列表視圖,要將用戶的信息顯示出來,還需要使用到以下的函數(shù): 新建一個圖像類型的繪制方式 renderer = gtk_cell_renderer_pixbuf_new ()。 給列添加新的屬性, STATUS_COLUMN_PIXMAP 指定了行信息, ” pixbuf” 指定了繪制類型 為圖像, renderer 指定了繪制方式 column = gtk_tree_view_column_new_with_attributes (Status, renderer, pixbuf, STATUS_COLUMN_PIXMAP, NULL)。 將建好的列添加到樹視圖中 gtk_tree_view_append_column (GTK_TREE_VIEW (tree), column)。 通過以上 3 個步驟一個視圖中就有了列,在進行相同的操作可創(chuàng)建多個列值,在用戶聯(lián)系人視圖中只建了兩個列分別顯示 聯(lián)系人姓名和聯(lián)系人狀態(tài)。 以上所創(chuàng)建的視圖和存儲空間都還是空的,要想將數(shù)據(jù)從其中顯示出來還需要使用到下面的函數(shù): 下面的函數(shù)負責從指定的存儲模型中取出新行的 iter gtk_tree_store_append (store, amp。parent_iter, NULL) 設置新添加行的值 gtk_tree_store_set (store, amp。parent_iter,CONTACTS_COLUMN_TEXT, Available, 1) iterator 是系統(tǒng)提供的一種訪問一個容器( container)對象 中各個元素,而又不需暴露該對象的內(nèi)部細節(jié)的方法。 通過以上兩個函數(shù),便可以在視圖中創(chuàng)建新的顯示行。 消息處理模塊: 當客戶端和服務器建立連接后,客戶端會創(chuàng)建一個專門的線程來維護客戶端和服務器之間的連接,該線程調(diào)用函數(shù)根據(jù)從服務器接收到的消息類型來選擇消息處理模塊。 該模塊主要處理以下幾種消息類型: 第 24 頁 共 27 頁 更新 聯(lián)系人列表信息: 當判斷接收到的消息為 GIF_ADDRLIST_MSG 時,程序?qū)β?lián)系人視圖進行刷新以便及時的顯示聯(lián)系人的當前狀態(tài)。實現(xiàn) 刷新 的方法是,先將以前的樹移除然后按照新的聯(lián)系人狀態(tài)進行樹的繪制,具體的編 寫方法在上節(jié)的界面顯示模塊中以給出,這里就不再重復了。 聊天信息: 當接收服務器發(fā)送的消息的類型為 GIF_CHAT_MSG 時,程序首先要確定是誰發(fā)出的聊天請求,然后判斷聊天窗口是否開啟,如果未開啟則將開啟標識設為真,然后打開聊天窗口。同時設置用戶和聯(lián)系人的顯示顏色,以便區(qū)分聊天消息的來源。 消息請求成功或失敗信息: 如果接收到了 GIF_SUCCESS_N_ERROR_MSG 類型的消息,則程序還會進一步的根據(jù) 另外一個標識符判斷是何種系統(tǒng)消息,并通過系統(tǒng)消息窗口顯示給用戶。 離線消息: 如果接收到的消息類型為 GIF_OFFLINE_MSG,程序會按照界面顯示模塊中對樹視圖的創(chuàng)建步驟那樣,創(chuàng)建一個顯示離線消息的視圖用來顯示離線消息。 以上的幾大模塊構(gòu)成了客戶端功能處理的主體,大部分的操作和消息處理都是由這些模塊來完成的。 本章小結(jié) 本章是全文的重點,從軟件的總體結(jié)構(gòu)到具體的流程再到詳細的分析和設計實現(xiàn), 都為軟件的設計奠定了堅實的一步。 通過對本章的 分析理 解將會對整個軟件 的設計模式 和編寫流程 有一個比較深入的了解。 結(jié) 論 在經(jīng)過了幾個月的設計和編寫過后,一套適用于 Linux 操作系統(tǒng)的 網(wǎng)絡 聊天軟件基本成型 , 前期設計 的一些功能需求也都得到了實現(xiàn) 。 這款軟件目前所具備的功能已經(jīng)能夠滿足日常的聊天需求。服務器經(jīng)過多平臺的測試后,能夠穩(wěn)定的運行??蛻舳藞D形界面效果良好,使用起來也簡單易用。欠缺之處在于沒有實現(xiàn)系統(tǒng)托盤,用戶使用時只能通過點擊任務欄的標簽對軟件進行顯示或隱藏,這一部分的功能將會進一步的完善。 作為大學四年學習成果的總結(jié),設計和編寫這樣一個軟件 能夠?qū)⑺鶎W過的知識綜合運用,并在實踐中得到提高,達到了預期的總結(jié)并檢驗學習成果目的 。當在開發(fā)過程中遇到問題時, 分析并解決問題, 在這一過程中能夠逐步的充實自己,這是在做畢業(yè)設計 的過程中讓我得到的最大收益。 第 25 頁 共 27 頁 參考文獻 [1] Stevens[美 ].TCP/IP詳解 卷 1:協(xié)議 [M].西安: 機械工業(yè)出版社 , 2021。 [2] Stevens[美 ].UNIX 網(wǎng)絡編程 (卷 1:套接口 API)第三版 [M].北京: 清華大學出版社 , 2021。 [3] Stevens[美 ].UNIX 網(wǎng)絡編程 (卷 2:進程間通信 )第二版 [M].北京: 清華大學出版社 , 2021。 [4] Stevens[美 ].UNIX環(huán)境高級編程第二版 [M].北京: 人民郵電出版社 , 2021。 [5]許宏松 .Linux應用程序開發(fā)指南:使用 GTK+/GNOME庫 [M].西安: 機械工業(yè)出版社 , 2021。 [6]宋國偉 . GTK+ [M].北京: 清華大學出版社 , 2021。 [7]Arthur Griffith [美 ]. GNOME/GTK + Programming Bible[M].西安:機械工業(yè)出版社 ,2021。 第 26 頁 共 27 頁 致 謝 本論文的工作是 2021年 2月至 2021年 6月在成都信息工程學院 網(wǎng)絡工程 系完成的。文中除了特別加以標注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學院或其他教學機構(gòu)的學位或證書而使用過的材料。除非另有說明,本文的工作是原始性工作。 本文是在 李曉崗老師和 茍智堅 老師的熱情關心和指導下完成的,他 們 淵博的知識和嚴謹?shù)闹螌W作風使我受益匪淺,對順利完 成本課題起到了極大的作用。在此向他 們 表示我最衷心的感謝! 在論文完成過程中,本人還得到了 本系 老師和同學的熱心幫助,本人向他們表示深深的謝意! 最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝! 作者簡介: 姓 名: 張曉韜 性別: 男 出生年月: 1983 年 11 民族: 漢族 Email: 第 27 頁 共 27 頁 聲 明 關于學位論文使用權(quán)和研究成果知識產(chǎn)權(quán)的說明: 本人完全了解成都信息工程學院有關保管使用學位論文的規(guī)定,其中包括: ( 1)學校有權(quán)保管并向有關部門遞交學位論文的原件與復印件。 ( 2)學??梢圆捎糜坝?、縮印或其他復制方式保存學位論文。 ( 3)學??梢詫W術交流為目的復制、贈送和交換學位論文。 ( 4)學??稍试S學位論文被查閱或借閱。 ( 5)學校可以公布學位論文的全部或部分內(nèi)容(保密學位論文在解密后遵守此規(guī)定)。 除非另有科研合同和其他法律文書 的制約,本論文的科研成果屬于成都信息工程學院。 特此聲明! 作者簽名: 2021 年 6月 日
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1