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

正文內(nèi)容

linux平臺下的聊天軟件的設(shè)計與開發(fā)—計算機(jī)畢業(yè)設(shè)計論文-免費(fèi)閱讀

2025-09-17 11:23 上一頁面

下一頁面
  

【正文】 (4)學(xué)校可允許學(xué)位論文被查閱或借閱。[7]Arthur Griffith [美]. GNOME/GTK + Programming Bible[M].西安:機(jī)械工業(yè)出版社,2000。作為大學(xué)四年學(xué)習(xí)成果的總結(jié),設(shè)計和編寫這樣一個軟件能夠?qū)⑺鶎W(xué)過的知識綜合運(yùn)用,并在實(shí)踐中得到提高,達(dá)到了預(yù)期的總結(jié)并檢驗(yàn)學(xué)習(xí)成果目的。以上的幾大模塊構(gòu)成了客戶端功能處理的主體,大部分的操作和消息處理都是由這些模塊來完成的。通過以上兩個函數(shù),便可以在視圖中創(chuàng)建新的顯示行。通過以上的3個步驟,就會在容器中生成一個可供用戶查看的滾動視圖。當(dāng)用戶點(diǎn)擊登陸后,系統(tǒng)將用戶輸入的IP地址寫入Socket地址結(jié)構(gòu),然后對套接口地址結(jié)構(gòu)進(jìn)行綁定。Void gif_receive_messages(int server_sockfd):處理從服務(wù)器端發(fā)送過來的消息,根據(jù)信息包所攜帶的消息類型信息選擇消息處理模塊。GtkTreeIter offline_selected_iter:定義一個查詢離線消息的迭代器。在相關(guān)的函數(shù)內(nèi)將該窗口的激活屬性打開,消息窗口便會自動的彈出并顯示消息。用戶擁有好友文件: 該文件中保存了當(dāng)前用戶所添加的好友信息。用戶下線消息處理模塊:當(dāng)服務(wù)器判斷用戶所請求的信息為下線消息后,設(shè)置該用戶狀態(tài)為下線,同時調(diào)用發(fā)送聯(lián)系人狀態(tài)函數(shù)將標(biāo)志位設(shè)置為離線向該用戶的聯(lián)系人發(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)信息。具體流程如下圖所示:圖 43 服務(wù)器流程圖 客戶端操作流程這款聊天軟件的客戶端采用圖形化用戶接口方式,GTK圖形界面的主要特點(diǎn)就是事件觸發(fā),當(dāng)處理引擎接收到某一窗體消息時,處理引擎就會按照事先編寫好的函數(shù)作相應(yīng)的處理動作,下圖總體上描述了客戶端軟件的操作處理流程:圖 4-4 客戶端操作流程圖 客戶端消息發(fā)送和接收流程客戶端運(yùn)行后首先要用戶登錄到服務(wù)器,如果登陸成功服務(wù)器會將在線的用戶聯(lián)系人列表發(fā)送給客戶端,此時客戶端即可顯示有哪些好友在線而哪些是離線的。}offline_msgs_t。}user_contacts_t。}gifhdr_t。聊天功能模塊:處理各種聊天信息,并判斷消息類型。就將在線用戶發(fā)給該用戶,并將該用戶的狀態(tài)發(fā)給各在線用戶。Socket執(zhí)行體處理傳輸層內(nèi)UDP軟件模塊和客戶程序之間的接口。同樣,由于無連接客戶程序沒有和遠(yuǎn)地主機(jī)建立直接連接,所以它也必須對協(xié)議端口進(jìn)行偵聽,以便接收以對它服務(wù)請求產(chǎn)生的數(shù)據(jù)報應(yīng)答。當(dāng)建立服務(wù)器程序時,應(yīng)該將服務(wù)器程序設(shè)計成等候客戶的請求。3 程序設(shè)計方案 方案比較 采用TCP方式連接TCP方式連接的一個顯著特點(diǎn)就是需要有服務(wù)器,這種類型的程序通常被稱為客戶機(jī)/服務(wù)器模式。因此我們將采用多線程方式的并發(fā)服務(wù)器來設(shè)計服務(wù)器端,這樣將能從很大程度上提高服務(wù)器的運(yùn)行效率。 軟件功能需求登錄功能。改變程序。Linux發(fā)布版本中都提供了C編譯器gcc。Glade提供了一個類庫,在程序運(yùn)行的時候,它可以通過讀取XML文件而生成相應(yīng)的程序界面,從而達(dá)到了程序代碼邏輯與用戶界面的完全分離。從本質(zhì)上來說, Gtk+構(gòu)件和Gnome構(gòu)件是完全類似的東西。 Gtk+圖形開發(fā)庫簡介Gtk+(GIMP Toolkit,GIMP工具包)是一個用于創(chuàng)造圖形用戶接口的圖形庫。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了稱為套接字(Socket)的接口。一個典型的數(shù)據(jù)報就是一個二進(jìn)制數(shù)據(jù)的傳輸單位。全雙工操作:TCP 進(jìn)程能夠同時發(fā)送和接收包。關(guān)于數(shù)據(jù)流傳輸,TCP 發(fā)送一個由序列號定義的無結(jié)構(gòu)的字節(jié)流。 TCP協(xié)議簡介因?yàn)槲覀冞@個程序所采用的是面向連接的TCP協(xié)議,所以我們這里就只對TCP(傳輸控制協(xié)議)這一部分作詳細(xì)的介紹。最初的網(wǎng)絡(luò)聊天軟件只是有簡單的文本界面,功能也十分有限,隨著技術(shù)的不斷發(fā)展與強(qiáng)大,擁有更多功能和美觀界面的聊天程序走進(jìn)了我們的生活,也有越來越多的人將網(wǎng)絡(luò)聊天軟件作為他們?nèi)粘I罱涣骱屯ㄐ诺墓ぞ摺?TCP/IP Protocol。在此基礎(chǔ)上,進(jìn)一步的分析了該類產(chǎn)品的需求情況。在第三章中詳細(xì)的介紹了所選取的開發(fā)環(huán)境,通過了解這些知識將會對該類軟件的開發(fā)流程有一個總體的認(rèn)識。 Network Programming。網(wǎng)絡(luò)聊天軟件在國外有ICQ等,在國內(nèi)主要有OICQ、Ticq和一些基于網(wǎng)頁的即時通訊工具,像Chinaren網(wǎng)站上的WebMaster等等,都做得即美觀,且功能強(qiáng)大,OICQ現(xiàn)在擁有非常大的用戶群。TCP:傳輸控制協(xié)議(TCP:Transmission Control Protocol)傳輸控制協(xié)議是一個 TCP/IP 組中能夠?qū)崿F(xiàn)可靠數(shù)據(jù)傳送的傳輸層協(xié)議,并通過順序響應(yīng)能實(shí)現(xiàn)對應(yīng)用程序的虛擬連接服務(wù),在必要的時候進(jìn)行包轉(zhuǎn)發(fā)。這對應(yīng)用程序有利,因?yàn)樵诒凰统?TCP 之前應(yīng)用程序不需要劃分成塊,TCP 可以將字節(jié)整合成字段,然后發(fā)送給IP。TCP 中的多路技術(shù):大量上層同時會話在單連接時進(jìn)行多路復(fù)用。每一個數(shù)據(jù)報的前8個字節(jié)用來包含報頭信息,剩余字節(jié)則用來包含具體的傳輸數(shù)據(jù)。 區(qū)分不同應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接,套接字主要有3個參數(shù):通信的目的IP地址、使用的傳輸層協(xié)議(TCP或UDP)和使用的端口號。Gtk+是基于LGPL授權(quán)的。GTK本質(zhì)上是面向?qū)ο蟮膽?yīng)用程序編程接口(API )。另一方面,有另一個工具(glade)可以用來把這些XML文件直接生成相應(yīng)的Gtk+/Gtkmm代碼。Linux系統(tǒng)下的gcc(GNU C Compiler)是GNU推出的功能強(qiáng)大、性能優(yōu)越的多平臺編譯器,是GNU的代表作品之一。那樣用戶可以試著修正某個bug引起的問題,然后繼續(xù)查找另一個bug。申請新用戶的功能。 客戶端性能需求客戶端只需要連接到服務(wù)器便可以進(jìn)行任務(wù)的處理工作,因此客戶端的主要性能要求為圖形界面運(yùn)行的穩(wěn)定性和對出錯信息的及時反映??蛻魴C(jī)/服務(wù)器模型也是一種網(wǎng)絡(luò)模型,但與前述的網(wǎng)絡(luò)模型不同,它并不是定義了網(wǎng)絡(luò)的層次結(jié)構(gòu),而是描述了一種網(wǎng)絡(luò)程序運(yùn)行的方式。TCP傳輸層通過協(xié)議端口和應(yīng)用程序通信,也就是說,為了接收客戶請求,服務(wù)器程序必須對傳輸層的一個特定協(xié)議端口進(jìn)行偵聽。Socket API中的bind()函數(shù)讓程序?qū)⒁粋€本地地址(包括主機(jī)地址和協(xié)議端口)和一個Socket聯(lián)系起來。 方案選擇綜合以上分析,本軟件開發(fā)選擇方案如下:Linux系統(tǒng)采用C語言開發(fā), TCP方式進(jìn)行連接。同時在服務(wù)器端顯示出來。離線消息模塊:接收和發(fā)送離線消息,對離線消息進(jìn)行處理。用戶信息結(jié)構(gòu):typedef struct _users_t{ char loginid[20]。用戶當(dāng)前狀態(tài):typedef struct _user_status_t{ char loginid[20]。用戶發(fā)送離線消息結(jié)構(gòu):typedef struct _offline_msgs_send_t{ char sender[20]。當(dāng)用戶點(diǎn)擊在線好友時便會彈出一個聊天信息窗體,該窗體用于發(fā)送和接收用戶的聊天信息。獲取系統(tǒng)時間函數(shù):char *gif_get_system_time()該函數(shù)取出當(dāng)前系統(tǒng)時間并隨消息一同發(fā)出,以便讓用戶能更好的了解到消息是何時發(fā)出的。離線消息處理模塊:當(dāng)服務(wù)器判斷用戶所請求的信息為讀取離線消息后,服務(wù)器會去讀用戶的離線消息文件,如果該文件中有被標(biāo)識為新的離線消息時,服務(wù)器將把該消息提取出來發(fā)送給用戶,同時把該消息標(biāo)識為已讀。被添加為好友文件: 該文件中保存了有哪些用戶把當(dāng)前用戶添加為好友。圖 410 系統(tǒng)消息窗口離線消息窗口:當(dāng)用戶點(diǎn)擊主窗口中的Offline按鈕時,該窗體被激活。GtkTreeModel *offline_selected_model:定義離線消息查詢數(shù)據(jù)管理接口。void gif_call_client_for_chat(GtkTreeSelection *selection, gpointer data):當(dāng)用戶點(diǎn)擊聯(lián)系人時會產(chǎn)生一個消息事件,程序根據(jù)用戶所選擇的聯(lián)系人生成聊天窗口,并對該窗體進(jìn)行初始化。同時將用戶名寫入消息頭結(jié)構(gòu)體,并將密碼隨同數(shù)據(jù)字段一起發(fā)送給服務(wù)器。但這個視圖中并沒有定義列信息,業(yè)就是說這是一個空的無任何用處的列表視圖,要將用戶的信息顯示出來,還需要使用到以下的函數(shù):新建一個圖像類型的繪制方式renderer = gtk_cell_renderer_pixbuf_new ()。消息處理模塊:當(dāng)客戶端和服務(wù)器建立連接后,客戶端會創(chuàng)建一個專門的線程來維護(hù)客戶端和服務(wù)器之間的連接,該線程調(diào)用函數(shù)根據(jù)從服務(wù)器接收到的消息類型來選擇消息處理模塊。 本章小結(jié)本章是全文的重點(diǎn),從軟件的總體結(jié)構(gòu)到具體的流程再到詳細(xì)的分析和設(shè)計實(shí)現(xiàn),都為軟件的設(shè)計奠定了堅實(shí)的一步。當(dāng)在開發(fā)過程中遇到問題時,分析并解決問題,在這一過程中能夠逐步的充實(shí)自己,這是在做畢業(yè)設(shè)計的過程中讓我得到的最大收益。致 謝本文是在李曉崗老師和茍智堅老師的熱情關(guān)心和指導(dǎo)下完成的,他們淵博的知識和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對順利完成本課題起
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1