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