【正文】
: 該文件中保存了當(dāng)前用戶所添加的好友信息。 在相關(guān)的函數(shù)內(nèi)將該窗口的激活屬性打開(kāi),消息窗口便會(huì)自動(dòng)的彈出并顯示消息。 GtkTreeIter offline_selected_iter: 定義一個(gè)查詢離線消息的迭代器。 Void gif_receive_messages(int server_sockfd): 處理從服務(wù)器端發(fā)送過(guò)來(lái)的消息,根據(jù)信息包所攜帶的消息類型信息選擇消息處理模塊。當(dāng)用戶點(diǎn)擊登陸后,系統(tǒng)將用戶輸入的 IP地址寫(xiě)入 Socket 地址結(jié)構(gòu),然后對(duì)套接口地址結(jié)構(gòu)進(jìn)行綁定。 通過(guò)以上的 3 個(gè)步驟,就會(huì)在容器中生成一個(gè)可供用戶查看的滾動(dòng)視圖。 通過(guò)以上兩個(gè)函數(shù),便可以在視圖中創(chuàng)建新的顯示行。 以上的幾大模塊構(gòu)成了客戶端功能處理的主體,大部分的操作和消息處理都是由這些模塊來(lái)完成的。 作為大學(xué)四年學(xué)習(xí)成果的總結(jié),設(shè)計(jì)和編寫(xiě)這樣一個(gè)軟件 能夠?qū)⑺鶎W(xué)過(guò)的知識(shí)綜合運(yùn)用,并在實(shí)踐中得到提高,達(dá)到了預(yù)期的總結(jié)并檢驗(yàn)學(xué)習(xí)成果目的 。 [7]Arthur Griffith [美 ]. GNOME/GTK + Programming Bible[M].西安:機(jī)械工業(yè)出版社 ,2021。 ( 4)學(xué)??稍试S學(xué)位論文被查閱或借閱。 ( 2)學(xué)??梢圆捎糜坝?、縮印或其他復(fù)制方式保存學(xué)位論文。 [5]許宏松 .Linux應(yīng)用程序開(kāi)發(fā)指南:使用 GTK+/GNOME庫(kù) [M].西安: 機(jī)械工業(yè)出版社 , 2021。客戶端圖形界面效果良好,使用起來(lái)也簡(jiǎn)單易用。 消息請(qǐng)求成功或失敗信息: 如果接收到了 GIF_SUCCESS_N_ERROR_MSG 類型的消息,則程序還會(huì)進(jìn)一步的根據(jù) 另外一個(gè)標(biāo)識(shí)符判斷是何種系統(tǒng)消息,并通過(guò)系統(tǒng)消息窗口顯示給用戶。parent_iter, NULL) 設(shè)置新添加行的值 gtk_tree_store_set (store, amp。 新建一個(gè)管理視圖 tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store))。 客戶端功能模塊的設(shè)計(jì) 與實(shí)現(xiàn) 用戶認(rèn)證模塊: 主要用到的函數(shù) 為: connect(), send(), pthread_create() 當(dāng)用戶啟動(dòng)程序后首先需要用戶登陸到服務(wù)器才能進(jìn)一步的對(duì)軟件進(jìn)行操作,這一部分即為用戶認(rèn)證模塊。 上面的枚 舉類型定義了用戶離線消息查看窗口中的列標(biāo)識(shí)。 客戶 端 主要 函數(shù) 和變量 GtkWidget *tree:用于顯示客戶端聯(lián)系人列表的樹(shù)視圖 GtkWidget *offline_tree:用于顯示離線消息的樹(shù)視圖 GtkWidget *chat_window[100]:用于保存聊天窗體的編號(hào) 。 需要填寫(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ā)送與接收 圖 48 登錄窗口 添加用戶窗口: 當(dāng)用戶電擊主窗口中的 Add 按鈕時(shí)該窗體被激活。 服務(wù)器上主要存放 5類用戶信息文件: 用戶信息數(shù)據(jù)文件: 該文件中保存了用戶的 loginid 和 password。 用戶聊天信息轉(zhuǎn)發(fā)的處理模塊: 當(dāng)服務(wù)器判斷用戶所請(qǐng)求的信息為聊天消息后,服務(wù)器會(huì)根據(jù)用戶所指定的聊天對(duì)象到 表中查找被指定用戶是否在線,如果被指定用戶在線則提取他的套接字地址結(jié)構(gòu),并按照該套接字信息將消息轉(zhuǎn)發(fā)。 該函數(shù)中有 7 個(gè)主要消息處理模塊,這些模塊針對(duì)不同的客戶消息進(jìn)行處理,將他們 組合在一起 便形成了一套完整的 消息處理機(jī)制。 軟件流程 本節(jié)主要敘述了該軟件的整體運(yùn)作流程,包括服務(wù)器和客戶端對(duì)消息的處理等流程,通過(guò)本節(jié)將能夠?qū)浖墓ぷ髁鞒痰玫揭?個(gè)總體的認(rèn)識(shí)。 unsigned int new。 }online_users_t。 char receiver[10]。 因此,針對(duì)這些操 作特性,將客戶端模塊進(jìn)行如下劃分: 登陸功能 模塊 :建立與服務(wù)器的連接并登陸,能顯示登陸錯(cuò)誤信息。 接受來(lái)自客戶端的各種信息并分別處理。 方案選擇 綜合以上分析, 本軟件 開(kāi)發(fā)選擇方案如下: Linux 系統(tǒng)采用 C 語(yǔ)言開(kāi)發(fā), TCP 方式進(jìn)行連接 。 Socket API 中的 bind()函數(shù)讓程序?qū)⒁粋€(gè)本地地址(包括主機(jī)地址和協(xié)議端口)和一個(gè) Socket 聯(lián)系起來(lái)。 TCP 傳輸層通過(guò)協(xié)議端口和應(yīng)用程序通信,也就是說(shuō),為了接收客戶請(qǐng)求,服務(wù)器程序必須對(duì)傳輸層的一個(gè)特定協(xié)議端口進(jìn)行偵聽(tīng)。 客戶機(jī) /服務(wù)器模型也是一種網(wǎng)絡(luò)模型,但與前述的網(wǎng)絡(luò)模型不同,它并不是定義了網(wǎng)絡(luò)的層次結(jié)構(gòu),而是描述了一種網(wǎng)絡(luò)程序運(yùn)行的方式。 GDB 主要能做四件事 (包括為了完成這些事而附加的功能 ),幫助 用戶 找出程序中的錯(cuò)誤。也許 這是以后桌面應(yīng)用程序開(kāi)發(fā)的一個(gè)方向。Gnome 的一些新特性,如 popt 參數(shù)分析,保存應(yīng)用程序設(shè)置等也是 Gtk+構(gòu)件所沒(méi)有的??梢杂盟鼈儊?lái)構(gòu)造非常豐富的用戶界面。以后借助于 Inter 網(wǎng)絡(luò),并經(jīng)過(guò)全世界各地計(jì)算機(jī)愛(ài)好者的共同努力下,現(xiàn)已成為今天世界上使用最多的一種UNIX 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長(zhǎng)。雖然 TCP 協(xié)議 中植入了 各種 安全 保障功能,但是在實(shí)際執(zhí)行的過(guò)程中會(huì)占用大量的系統(tǒng)開(kāi)銷(xiāo),無(wú)疑使速度受到嚴(yán)重的影響。 UDP 協(xié)議 從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似 協(xié)議 所掩蓋,但是即使是在今天, UDP 仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層 協(xié)議 。 TCP 的可靠機(jī)制允許設(shè)備處理丟失、刪除及讀錯(cuò)的包。這一過(guò)程是通過(guò)使用 TCP 的 “ 端口號(hào) ” 完成 的。 3 設(shè)計(jì)原理 及方案分析 對(duì)網(wǎng)絡(luò)聊天程序的設(shè)計(jì)的原理和過(guò)程的透徹理解,是 設(shè)計(jì) 網(wǎng)絡(luò)聊天程序的前提。 因此我們將采用多線程方式的并發(fā)服務(wù)器來(lái)設(shè)計(jì)服務(wù)器端,這樣將能從很大程度上提高服務(wù)器的運(yùn)行效率。 軟件功能需求 登錄功能。但是有服務(wù)器的通訊軟件,有著不可比擬的優(yōu)勢(shì):可以發(fā)送離線消息,不管用戶當(dāng)時(shí)是否在 線,下次上線時(shí),就可以看到這條消息了。 Linux 操作系統(tǒng)作為一個(gè)開(kāi)源的操作系統(tǒng)被越來(lái)越多的人所應(yīng)用,它的好處在于操作系統(tǒng)源代碼的公開(kāi)化! 只要是基于 GNU 公約的軟件你都可以任意使用并修改它的源代碼。 13 客戶端消息發(fā)送和接收流程 8 4 程序設(shè)計(jì)路線 7 方案選擇 2 總體性能需求 關(guān)鍵詞 : Linux 系統(tǒng); C/S 結(jié)構(gòu) ; TCP/IP 協(xié)議;網(wǎng)絡(luò)編程;圖形 用戶 界面 Design Gtk Interface Message Software in the Platform of Linux Operating System Abstract Nowadays the work technology develops very rapidly, and the convenience goes without saying that the work bring out to people. The chat program as a cheap and quick means of munication has been adopted by more and more people in the world. This disquisition expound how to use the GTK+ and C project a chat program base on the Linux platform, the paper is divided into four parts. The first part is to deal with the development of this product and the background and significance of developing of this soft ware. On this basis it goes on to describe the demand for this product. The third part introduces in detail the choice about the circumstance of this development. As the people adopting this developing system are not many, this part devotes much space to it. With such knowledge in hand, you39。 本文 闡述了如何 使用 GTK+圖形開(kāi)發(fā)庫(kù)和 C 語(yǔ)言編寫(xiě)一個(gè)基于 Linux 平臺(tái)運(yùn)行的聊天軟件 的過(guò)程。在第三章中詳細(xì)的介紹了所選取的開(kāi)發(fā)環(huán)境,因?yàn)檫@一套開(kāi)發(fā)體系使用者 數(shù)量并不多所以在此多花了一些筆墨進(jìn)行講解,通過(guò)了解這些知識(shí)將會(huì)對(duì)該類軟件的開(kāi)發(fā)流程有一個(gè)總體的認(rèn)識(shí)。 TCP/IP protocol。 5 Gtk+圖形開(kāi)發(fā)庫(kù)簡(jiǎn)介 5 Gnome的開(kāi)發(fā)結(jié)構(gòu)簡(jiǎn)介 12 客戶端操作流程 24 參考文獻(xiàn) 26 聲 明 網(wǎng)絡(luò)聊天軟件的 發(fā)展及 現(xiàn)狀 網(wǎng)絡(luò)的誕生從某種意義上來(lái)說(shuō)改變了我們的生活,它將這個(gè)世界的上不同地域的人之間的距離拉近了。 所以 , 帶服務(wù)器的聊天 軟件在網(wǎng)絡(luò)上, 有著非常廣泛的用途 ,為網(wǎng)絡(luò)上的通訊 帶來(lái) 了 極大的方便 ,它使人與人 之間 的交流不再只局限于某一個(gè)范圍 ,并且它的開(kāi)銷(xiāo)也是很小的,你只需要擁有一部可以聯(lián)網(wǎng)的 PC 機(jī)就足夠了! 第 2 頁(yè) 共 27 頁(yè) 本章小結(jié) 隨著計(jì)算機(jī)應(yīng)用技術(shù)的日益普及,網(wǎng)絡(luò)也遍及 到我們生活的每個(gè)角落,很好的利用這人資源,將為我們的工作和學(xué)習(xí)帶來(lái)極大的方便和提高工作效率。 服務(wù)器端可以保存用戶的信息。 第 3 頁(yè) 共 27 頁(yè) 錯(cuò)誤處理需求 所有的應(yīng)用程序在運(yùn)行過(guò)程中都會(huì)出現(xiàn)出錯(cuò)的情況,這種錯(cuò)誤可能來(lái)自于程序本身的 BUG 也可能是用戶操作的失誤所造成的。實(shí)際所稱的 TCP/IP協(xié)議包括了在國(guó)際互聯(lián)網(wǎng)絡(luò)應(yīng)用的一組協(xié)議,互聯(lián)網(wǎng)協(xié)議族是此協(xié)議族的另一個(gè)名字。 TCP 服務(wù)提供了數(shù)據(jù)流傳輸、可靠行、有效流控制、全雙工操作和多路復(fù)用技術(shù)等。當(dāng)向發(fā)送者返回發(fā)送確認(rèn)響應(yīng),接收 TCP 進(jìn)程就