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

正文內(nèi)容

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

2024-09-12 11:23本頁(yè)面
  

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