【正文】
With a stronger voice she soon added, ``I have this fort immediately, tha。 ``indeed you have no reason. He may live in my memory as the most amiable man of my acquaintance, but that is all. I have nothing either to hope or fear, and nothing to reproach him with. Thank God! I have not that pain. A little time therefore. I shall certainly try to get the better.39。39。39。s leaving them together, after a longer irritation than usual about Netherfield and its master, she could not help saying, ``Oh! that my dear mother had more mand over herself。s situation remained the same, her peace equally wounded. A day or two passed before Jane had courage to spea k of her feelings to Elizabeth。s attachment, or whether it had escaped his observation。 interference。s was involved in it, as, she thought, he must be sensible himself. It was a subject, in short, on which reflection would be long indulged, and must be unavailing. She could think of nothing else, and yet whether Bingley39。 and much as she had always been disposed to like him, she could not think w ithout anger, hardly without contempt, on that easiness of temper, that want of proper resolution which now made him the slave of his designing friends, and led him to sacrifice his own happiness to the caprice of their inclinations. Had his own happiness, however, been the only sacrifice, he might have been allowed to sport with it in what ever manner he thought best。s assertion of her brother39。s being an inmate of Mr. Darcy39。 and when Jane could attend to the rest of the letter, she found little, except the professed affection of the writer, that could give her any fort. Miss Darcy39。s letter arrived, and put an end to doubt. The very first sentence conveyed the assurance of their being all settled in London for the winter, and concluded with her brother39。 除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學院。 ( 4)學校可允許學位論文被查閱或借閱。 ( 2)學??梢圆捎糜坝?、縮印或其他復制方式保存學位論文。除非另有說明,本文的工作是原始性工作。在此向他們表示我最衷心的感謝! 在論文完成過程中,本人還得到了本系老師和同學的熱心幫助,本人向他們表示深深的謝意! 最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝! 作者簡介: 姓 名:張曉韜 性別:男 出生年月: 1983 年 11 民族:漢族 Email: 第 26 頁 共 26 頁 聲 明 本論文的工作是 2020年 2月至 2020年 6月在成都信息工程學院網(wǎng)絡工程系完成的。 [7]Arthur Griffith [美 ]. GNOME/GTK + Programming Bible[M].西安:機械工業(yè)出版社 ,2020。 [5]許宏松 .Linux應用程序開發(fā)指南:使用 GTK+/GNOME庫 [M].西安: 機械工業(yè)出版社 , 2020。 [3] Stevens[美 ].UNIX 網(wǎng)絡編程 (卷 2:進程間通信 )第二版 [M].北京: 清華大學出版社 , 2020。 第 24 頁 共 26 頁 參考文獻 [1] Stevens[美 ].TCP/IP詳解 卷 1:協(xié)議 [M].西安: 機械工業(yè)出版社 , 2020。 作為大學四年學習成果的總結(jié),設計和編寫這樣一個軟件能夠?qū)⑺鶎W過的知識綜合運用,并在實踐中得到提高,達到了預期的總結(jié)并檢驗學習成果目的??蛻舳藞D形界面效果良好,使用起來也簡單易用。 這款軟件目前所具備的功能已經(jīng)能夠滿足日常的聊天需 求。通過對本章的 分析理 解將會對整個軟件 的設計模式和編寫流程 有一個比較深入的了解。 以上的幾大模塊構(gòu)成了客戶端功能處理的主體,大部分的操作和消息處理都是由這些模塊來完成的。 消息請求成功或失敗信息: 如果接收到了 GIF_SUCCESS_N_ERROR_MSG 類型的消息,則程序還會進一步的根據(jù)另外一個標識符判斷是何種系統(tǒng)消息,并通過系統(tǒng)消息窗口顯示給用戶。 聊天信息: 當接收服務 器發(fā)送的消息的類型為 GIF_CHAT_MSG 時,程序首先要確定是誰發(fā)出的聊天請求,然后判斷聊天窗口是否開啟,如果未開啟則將開啟標識設為真,然后打開聊天窗口。該模塊主要處理以下幾種消息類型: 更新聯(lián)系人列表信息: 第 23 頁 共 26 頁 當判斷接收到的消息為 GIF_ADDRLIST_MSG 時,程序?qū)β?lián)系人視圖進行刷新以便及時的顯示聯(lián)系人的當前狀態(tài)。 通過以上兩個函數(shù),便可以在視 圖中創(chuàng)建新的顯示行。parent_iter, NULL) 設置新添加行的值 gtk_tree_store_set (store, amp。 通過以上 3 個步驟一個視圖中就有了列,在進行相同的操作可創(chuàng)建多個列值,在用戶聯(lián)系人視圖中只建了兩個列分別顯示聯(lián)系人姓名和聯(lián)系人狀態(tài)。 給列添加新的屬性, STATUS_COLUMN_PIXMAP 指定了行信息, ” pixbuf” 指定了繪制類型為圖像, renderer 指定了繪制方式 column = gtk_tree_view_column_new_with_attributes (Status, renderer, pixbuf, STATUS_COLUMN_PIXMAP, NULL)。 通過以上的 3 個步驟,就會在容器中生成一個可供用戶查看的滾動視圖。 新建一個管理視圖 tree = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store))。 界面顯示模塊: 當用戶成功登陸后,在聯(lián)系人列表中將會顯示用戶的聯(lián)系人信息,在離線消息窗口中會顯示接收到 的離線消息,這兩個視圖均是用列表視圖來實現(xiàn)的。如果登陸成功,則創(chuàng)建線程來維護和服務器的連接。當用戶點擊登陸后,系統(tǒng)將用戶輸入的 IP地址寫入 Socket 地址結(jié)構(gòu),然后對套接口地址結(jié)構(gòu)進行綁定。 客戶端功能模塊的設計與實現(xiàn) 用戶認證模塊: 主要用到的函數(shù)為: connect(), send(), pthread_create() 當用戶 啟動程序后首先需要用戶登陸到服務器才能進一步的對軟件進行操作,這一部分即為用戶認證模塊。 gtk_widget_show(create_msgbox(error, Server Disconnected))。 在系統(tǒng)調(diào)用線程時為保證線程安全,需要前后分別調(diào)用 gdk_threads_enter ()和 gdk_threads_leave ()函數(shù)。 Void gif_receive_messages(int server_sockfd):處理從服務器端發(fā)送過來的消息,根據(jù)信息包所攜帶的消息類型信息選擇消息處理模塊。 上面的枚舉類型定義了用戶離線消息查看窗口中的列標識。 上面的枚舉類型定義了用戶聯(lián)系人視窗中的列標識。 GtkCellRenderer *renderer:定義一個數(shù)據(jù)表現(xiàn)形式繪制類型。 GtkTreeIter offline_selected_iter:定義一個查詢離線消息的迭代器。 客戶端主要函數(shù)和變量 GtkWidget *tree:用于顯示客戶端聯(lián)系人列表的樹 視圖 GtkWidget *offline_tree:用于顯示離線消息的樹視圖 GtkWidget *chat_window[100]:用于保存聊天窗體的編號。 圖 412 聊天窗口 紅色顯示的是用戶自身,藍色為聯(lián)系人。 離線消息可以查看當用戶不在線時,有哪些用戶向該用戶發(fā)送了離線消息。 在相關(guān)的函數(shù)內(nèi)將該窗口的激活屬性打開,消息窗口便會自動的彈出并顯示消 息。 需要填寫信息: Server ip:填寫服務器地址 User id: 填寫用戶名 Password :填寫密碼 點擊按鈕的消息事件: Cancel:退出當前窗口 Clear:清空填寫的信息 OK:觸發(fā) on_butOk_clicked 函數(shù)該函數(shù)用于連接服務器并同服務器進行信息的發(fā)送與接收 圖 48 登錄窗口 添加用戶窗口: 當用戶電擊主窗口中的 Add 按鈕時該窗體被激活。 主窗體:該窗體中包含了所有的用戶操作按鈕和好友列表,用戶的操作都在這個窗體中完成。 離線消息存儲文件: 該文件中保存了其它用戶發(fā)給當前用戶的離線消息。 用戶擁有好友文件: 第 17 頁 共 26 頁 該文件中保存了當前用戶所添加的好友信息。 服務器上主要存放 5類用戶信息文件: 用戶信息數(shù) 據(jù)文件: 該文件中保存了用戶的 loginid 和 password。之所以采用這種發(fā)式是因為該服務器作為一個小型的聊天軟件的服務器,本身所要求保存的數(shù)據(jù)量并不大,且用戶數(shù)量也是比較有限的,在這種情況下采用文件方式對信息進行讀取在速度和開銷上都要有一些優(yōu)勢,且便于管理員管理用戶。 刪除離線消息處理模塊: 如果客戶做出了刪除離線消息的動作,那么服務器端將會根據(jù)用戶的發(fā)送信息把該用戶的離線消息文件中的離線消息刪除。 用戶下線消息處理模塊: 當服 務器判斷用戶所請求的信息為下線消息后,服務器將把用戶從 中刪除,設置該