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

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文-linux平臺(tái)下的聊天軟件的設(shè)計(jì)與開發(fā)(完整版)

  

【正文】 總 體上列出該聊天程序的基本功能需求,接下來(lái)的工作就是如何將這些功能開發(fā)的盡量完善,使得界面清晰簡(jiǎn)單,方便易用。 服務(wù)器模型一般分為循環(huán)服務(wù)器和并發(fā)服務(wù)器,循環(huán)服務(wù)器一次只能處理一個(gè)連接,也就是說(shuō)同一時(shí)間只能由一個(gè)用戶連接到服務(wù)器進(jìn)行消息處理,這種情況是不被允許的。對(duì)需求的深入理解是開發(fā)工作獲得成功的前提條件,它對(duì)目標(biāo)項(xiàng)目提出完整、準(zhǔn)確、清晰、具體的要求。 現(xiàn)在也有很多 在網(wǎng)絡(luò)上不使用服務(wù)器的通訊軟件,這種軟件小巧且方便,也能解決一部分問(wèn)題。 27 第 1 頁(yè) 共 27 頁(yè) 1 引言 課題的 背景 及意義 在網(wǎng)絡(luò)無(wú)所不在的今天,在 Inter 上,有 ICQ、 MSN、 Gtalk、 OICQ 等網(wǎng)絡(luò)聊天軟件, 極大程度上方便了處于在世界各地的友人之間的相互聯(lián)系,也使世界 好像 一下子縮小了,不管你在哪里,只要你上了網(wǎng),打開這些軟件,就可以給你的朋友發(fā) 送 信息,不管對(duì)方是否也同時(shí)在線,只要知道他有號(hào)碼。 25 致 謝 24 結(jié) 論 10 消息結(jié)構(gòu)體的設(shè)計(jì) 2 錯(cuò)誤處理需求 最后總結(jié)了該軟件開發(fā)的不足之處,還有 軟件需要完善的部分 。 網(wǎng)絡(luò)聊天軟件作為一種開銷低 且 方便快捷的通訊手段,被越來(lái)越多的人所使用 。 之后,在通過(guò)對(duì)預(yù)備方案的分析和總結(jié)后,最終確定設(shè)計(jì)路線。 Network programming。 3 TCP/IP協(xié)議 5 Linux系統(tǒng)簡(jiǎn)介 6 編程語(yǔ)言和編程工具簡(jiǎn)介 8 本章小結(jié) 8 總體設(shè)計(jì)方案 12 服務(wù)器消息處理流 程 22 本章小結(jié) 伴隨著網(wǎng)絡(luò)的誕生,網(wǎng)絡(luò)聊天軟件也隨之而來(lái)。 所 以,開發(fā)一個(gè)網(wǎng)絡(luò)里的 C/S 通訊軟件 是十分必要 的 。 客戶端程序可以 顯示在線好友。 當(dāng) 有 錯(cuò)誤發(fā)生時(shí),我們應(yīng)該有一個(gè)很好的機(jī)制來(lái)保障錯(cuò)誤能夠及時(shí)地被排除。 TCP 協(xié)議 因?yàn)槲覀冞@個(gè)程序所采用的是 面向 連接的 TCP 協(xié)議,所以我們這里就只對(duì)TCP( 傳輸控制協(xié)議) 這一部分作詳細(xì)的介紹。 第 4 頁(yè) 共 27 頁(yè) 關(guān)于數(shù)據(jù)流傳輸, TCP 發(fā)送一個(gè)由序列號(hào)定義的無(wú)結(jié)構(gòu)的字節(jié)流。 全雙工操作: TCP 進(jìn)程能夠同時(shí)發(fā)送和接收包。一個(gè)典型的數(shù)據(jù)報(bào)就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與 TCP/ IP協(xié)議交互提供了稱為套接字 (Socket)的接口。 Gtk+圖形開發(fā)庫(kù) 簡(jiǎn)介 Gtk+(GIMP Toolkit, GIMP工具包 )是一個(gè)用于創(chuàng)造圖形用戶接口的圖形庫(kù)。從本質(zhì)上來(lái)說(shuō), Gtk+構(gòu)件和 Gnome 構(gòu)件是完全類似的東西。 Glade 提供了一個(gè)類庫(kù),在程序運(yùn)行的時(shí)候,它可以通過(guò)讀取 XML 文件而生成相應(yīng)的程序界面,從而達(dá)到了程序代碼邏輯與用戶界面的完全分離。 Linux 發(fā)布版本中都提供了 C編譯器 gcc,它目前的版本是 。 改變程序。服務(wù)程序通常在一個(gè)眾所周知的地址監(jiān)聽(tīng)對(duì)服務(wù)的請(qǐng)求,也就是說(shuō),服務(wù)進(jìn)程一直處于休眠狀態(tài),直到一個(gè)客戶程序提出了請(qǐng)求信息。 采用 UDP 方式連接 采用 UDP 協(xié)議的程序不需要 有 服務(wù)器,兩個(gè)程序之間可以通過(guò)無(wú)連接的方式進(jìn)行通 信,所以無(wú)連接是使用 UDP 協(xié)議程序的一個(gè)顯著特點(diǎn)。因此無(wú)連接客戶程序必須在一個(gè)協(xié)議端口,對(duì)應(yīng)答數(shù)據(jù)報(bào)進(jìn)行偵聽(tīng)。 理論行于先,有了豐富的理論知識(shí)后,軟件的開發(fā)效果勢(shì)必事半功倍。 處理 聊天信息 模塊 : 轉(zhuǎn)發(fā)消息給指定的用戶。 配置信息 模塊 :提供基本的軟件配置操作。 char password[20]。 unsigned int status。 char dateserial[20]。當(dāng)用戶點(diǎn)擊離線用戶時(shí)便會(huì)觸發(fā)一個(gè)離線消息事件,該事件通過(guò)服務(wù)器轉(zhuǎn)發(fā)方式發(fā)送給離線用戶,當(dāng)對(duì)方上線時(shí)便可查看該離線消息。 服務(wù)器 消息 處理 模塊的設(shè)計(jì) 與實(shí)現(xiàn) 服務(wù)器的消息處理模塊主要由 7 部分組成 ,下面進(jìn)行分別論述: 用戶登錄消息處理模塊: 當(dāng)服務(wù)器 接收到用戶消息并判斷是登錄消息后,服務(wù)器將根據(jù)用戶所發(fā)送過(guò)來(lái)的用戶名和密碼到 表中進(jìn)行匹配,如果匹配成功則把該用戶加入到 表中,設(shè)置用戶在線狀態(tài)為真的同時(shí)調(diào)用發(fā)送聯(lián)系人在線列表函數(shù),向添加該用戶為好友的用戶發(fā)送該用戶的上線信息。 刪除離線消息處理模塊: 如果客戶 做出 了刪除離線消息的動(dòng)作, 那么服 務(wù)器端將會(huì)根據(jù)用戶的發(fā)送信息把該用戶的離線消息文件中的離線消息刪除。 離線消息存儲(chǔ)文件: 該文件中保存了 其它用戶發(fā)給當(dāng)前用戶的離線消息。 離線消息可以查看當(dāng)用戶不在線時(shí),有哪些用戶向該用戶發(fā)送了離線消息。 GtkCellRenderer *renderer:定義一個(gè)數(shù)據(jù)表現(xiàn)形式 繪制類型 。 在系統(tǒng)調(diào)用線程時(shí)為保證線程安全,需要前后分別調(diào)用 gdk_threads_enter ()和 gdk_threads_leave ()函數(shù)。 如果登陸成功,則 創(chuàng)建線程來(lái)維護(hù)和服務(wù)器的連接。 給列添加新的屬性, STATUS_COLUMN_PIXMAP 指定了行信息, ” pixbuf” 指定了繪制類型 為圖像, renderer 指定了繪制方式 column = gtk_tree_view_column_new_with_attributes (Status, renderer, pixbuf, STATUS_COLUMN_PIXMAP, NULL)。 該模塊主要處理以下幾種消息類型: 第 24 頁(yè) 共 27 頁(yè) 更新 聯(lián)系人列表信息: 當(dāng)判斷接收到的消息為 GIF_ADDRLIST_MSG 時(shí),程序?qū)?duì)聯(lián)系人視圖進(jìn)行刷新以便及時(shí)的顯示聯(lián)系人的當(dāng)前狀態(tài)。 通過(guò)對(duì)本章的 分析理 解將會(huì)對(duì)整個(gè)軟件 的設(shè)計(jì)模式 和編寫流程 有一個(gè)比較深入的了解。 第 25 頁(yè) 共 27 頁(yè) 參考文獻(xiàn) [1] Stevens[美 ].TCP/IP詳解 卷 1:協(xié)議 [M].西安: 機(jī)械工業(yè)出版社 , 2021。文中除了特別加以標(biāo)注地方外,不包含他人已經(jīng)發(fā)表或撰寫過(guò)的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機(jī)構(gòu)的學(xué)位或證書而使用過(guò)的材料。 除非另有科研合同和其他法律文書 的制約,本論文的科研成果屬于成都信息工程學(xué)院。 本文是在 李曉崗老師和 茍智堅(jiān) 老師的熱情關(guān)心和指導(dǎo)下完成的,他 們 淵博的知識(shí)和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對(duì)順利完 成本課題起到了極大的作用。 [3] Stevens[美 ].UNIX 網(wǎng)絡(luò)編程 (卷 2:進(jìn)程間通信 )第二版 [M].北京: 清華大學(xué)出版社 , 2021。 這款軟件目前所具備的功能已經(jīng)能夠滿足日常的聊天需求。 聊天信息: 當(dāng)接收服務(wù)器發(fā)送的消息的類型為 GIF_CHAT_MSG 時(shí),程序首先要確定是誰(shuí)發(fā)出的聊天請(qǐng)求,然后判斷聊天窗口是否開啟,如果未開啟則將開啟標(biāo)識(shí)設(shè)為真,然后打開聊天窗口。 通過(guò)以上 3 個(gè)步驟一個(gè)視圖中就有了列,在進(jìn)行相同的操作可創(chuàng)建多個(gè)列值,在用戶聯(lián)系人視圖中只建了兩個(gè)列分別顯示 聯(lián)系人姓名和聯(lián)系人狀態(tài)。 界面顯示模塊: 當(dāng)用戶成 功登陸后,在聯(lián)系人列表中將會(huì)顯示用戶的聯(lián)系人信息,在離線消息窗口中會(huì)顯示接收到的離線消息 ,這兩個(gè)視圖均是用列表視圖來(lái)實(shí)現(xiàn)的。 gtk_widget_show(create_msgbox(error, Server Disconnected))。 上面的枚舉類型定義了用戶聯(lián)系人視窗中的列標(biāo)識(shí)。 圖 412 聊天窗口 紅色顯示的是用戶自身,藍(lán)色為聯(lián)系人。 主窗體:該窗體中包含了所有的用戶操作按鈕和好友列表,用戶的操作都在這個(gè)窗體中完成。之所以采用這種發(fā)式是因?yàn)樵摲?wù)器作為一個(gè)小型的聊天軟件的服務(wù)器,本身所要求保存的數(shù)據(jù)量并不大,且用戶數(shù)量也是比較有限的,在這種情況下采用文件方式對(duì)信息進(jìn)行讀取在速度和開銷上都要有一些優(yōu)勢(shì) ,且便于管理員管理用戶。 添加好友信息處理模塊: 第 17 頁(yè) 共 27 頁(yè) 當(dāng)服務(wù)器收到用戶請(qǐng)求加好友的消息時(shí),服務(wù)器首先在 中查找要被添加的用戶是否存在,如果該用戶存在則把該用戶的信息存儲(chǔ)到當(dāng)前用戶的好友文件中,同時(shí)在被 添加好友的用戶的 表中保存當(dāng)前用戶的信息。 具體流程如下圖所示: 圖 46 管理 用戶流程圖 運(yùn)行用戶管理程序 添加用戶 顯示用戶 刪除用戶 退出程序 第 16 頁(yè) 共 27 頁(yè) 詳細(xì)設(shè)計(jì) 該部分詳細(xì)講述了服務(wù)器和客戶端的界面和代碼,直觀地對(duì)該軟件進(jìn)行設(shè)計(jì)說(shuō)明,通過(guò)該部分將對(duì)軟件有一個(gè)全面的了解。 unsigned int length。 離線消息存儲(chǔ)時(shí)離線消息結(jié)構(gòu): 第 12 頁(yè) 共 27 頁(yè) typedef struct _offline_msgs_t { char sender[20]。 在線用戶信息結(jié)構(gòu): typedef struct _online_users_t { char loginid[20]。 unsigned int length。 第 9 頁(yè) 共 27 頁(yè) 發(fā)布系統(tǒng)消息模塊:將 用戶 上 下線 的 消息發(fā)給各客戶端,并改寫用戶在服務(wù)器端 和客戶端 的狀態(tài)。 總體 設(shè)計(jì) 方案 為實(shí)現(xiàn)網(wǎng)絡(luò)聊天的功能, 該軟件 采用 Socket 編程,服務(wù)器與客戶端采用了TCP/IP 方式連接 ,在設(shè)計(jì)聊天方案時(shí),實(shí)行將所有信息發(fā)往服務(wù)器端,再由服務(wù)器進(jìn)行分別處理的思路,服務(wù)器端是所有信息的中心。也就是說(shuō),類似服務(wù)器程序,無(wú)連接客戶程序告訴 Socket 執(zhí)行體使用哪個(gè)協(xié)議端口進(jìn)行數(shù)據(jù) 傳輸。例如,無(wú)連接和連接服務(wù)器程序必須在協(xié)議端口偵聽(tīng)客戶請(qǐng)求。 雖然基于連接的服務(wù)是設(shè)計(jì)客戶 /服務(wù)器應(yīng)用程序的標(biāo)準(zhǔn),但有些服務(wù)也是可以通過(guò)數(shù)據(jù)報(bào) Socket 提供的。 用戶 可以用 GDB 來(lái)調(diào)試 C和 C++寫的程序。 gcc 是可以在多種硬體平臺(tái)上編譯出可執(zhí)行程序的超級(jí)編譯器,其執(zhí)行效率與一般的編譯器相比平均效率要高20%~30% gcc 編譯器能將 C、 C++語(yǔ)言源程序、匯程式化序和目標(biāo)程序編譯、連接成可執(zhí)行文件,如果沒(méi)有給出可執(zhí)行文件的名字, gcc 將生成一個(gè)名為 的文件。對(duì)于比較小型的項(xiàng)目,這種方法是比較適用的。雖然完全是用 C寫成的,但它仍然是用類和回調(diào)函數(shù) (指向函數(shù)的指 針 )的方法實(shí)現(xiàn)的。 Gtk+圖形庫(kù)使用一系列稱為“構(gòu)件”的對(duì)象來(lái)創(chuàng)建應(yīng)用程序的圖形用戶接口。通過(guò)將這 3個(gè)參數(shù)結(jié)合起來(lái),與一個(gè) Socket 綁定,應(yīng)用層就可以和傳輸層通過(guò)套接
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1