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