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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-linux下的類qq軟件開發(fā)-wenkub

2022-12-12 19:31:34 本頁面
 

【正文】 選取的開發(fā)環(huán)境,通過了解這些知識(shí)將會(huì)對(duì)該類軟件的開發(fā)流程有一個(gè)總體的認(rèn)識(shí)。 最后總結(jié)了該軟件開發(fā)的不足之處,還有軟件需要完善的部分。但對(duì)很多習(xí)慣于 Windows 操作系統(tǒng)的人來說, Linux 的操作不夠人性化、交互界面不夠美觀,這給 Linux 操作系統(tǒng)的普及帶來了很大的阻礙。最初的網(wǎng)絡(luò)聊天軟件只是有簡單的文本界面,功能也十分有限,隨著技術(shù)的不斷發(fā)展與強(qiáng)大,擁有更多功能和美觀界面的聊天程序走進(jìn)了我們的生活,也有越來越多的人將網(wǎng)絡(luò)聊天軟件作為他們?nèi)粘I罱涣骱屯ㄐ诺墓ぞ?。可以保存用戶的個(gè)人信息或個(gè)人簡介,供人查看。 3 TCP 協(xié)議簡介 因?yàn)槲覀冞@個(gè)程序所采用的是面向連接的 TCP 協(xié)議,所以我們這里就只對(duì) TCP(傳輸控制協(xié)議)這一部分作詳細(xì)的介紹。這一過程是通過使用 TCP 的 端口號(hào) 完成的。關(guān)于數(shù)據(jù)流傳輸, TCP 發(fā)送一個(gè)由序列號(hào)定義的無結(jié)構(gòu)的字節(jié)流。 TCP 的可靠機(jī)制允許設(shè)備處理丟失、 4 刪除及讀錯(cuò) 的包。全雙工操作: TCP 進(jìn)程能夠同時(shí)發(fā)送和接收包。 UDP 協(xié)議從問世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天, UDP 仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。一個(gè)典型的數(shù)據(jù)報(bào)就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。雖然 TCP 協(xié)議中植入了各種安全保障功能,但是在實(shí)際執(zhí)行的過程中會(huì)占用大量的系統(tǒng)開銷,無疑使速度受到嚴(yán)重的影響。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與 TCP/ IP 協(xié)議交互提供了稱為套接字 (Socket)的接口。以后借助 6 于 Inter 網(wǎng)絡(luò),并經(jīng)過全世界各地計(jì)算機(jī)愛好者的共同努力下,現(xiàn)已成為今天世界上使用最多的一種 UNIX 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長。 QT圖形開發(fā)庫簡介 Qt 是諾基亞開發(fā)的一個(gè)跨平臺(tái)的 C++圖形用戶界面應(yīng)用程序框架。 2) 面向?qū)ο? Qt 的良好封裝機(jī)制使得 Qt 的模塊化程度非常高,可重用性較好,對(duì)于用戶開發(fā)來說是非常方便的。 4) 支持 2D/3D 圖形渲染,支持 OpenGL。 C 語言也更易移植,因而,在 Linux 下編程的最佳語言應(yīng)該是 C 語言, Linux 上的很多應(yīng)用程序就是用 C 語言寫的。 gcc 是可以在多種硬體平 臺(tái)上編譯出可執(zhí)行程序的超級(jí)編譯器,其執(zhí)行效率與一般的編譯器相比平均效率要高 20%~30% gcc 編譯器能將 C、 C++語言源程序、匯程式化序和目標(biāo)程序編譯、連接成可執(zhí)行文件,如果沒有給出 8 可執(zhí)行文件的名字, gcc 將生成一個(gè)名為 的文件。保證程序在指定的條件下停止。用戶可以用 GDB 來調(diào)試 C 和C++寫的程序。 二、軟件需求分析 為了開發(fā)出符合要求的網(wǎng)絡(luò)聊天程序,首先必須知道使用 者的需求。 客戶可以通過服務(wù)器轉(zhuǎn)發(fā),實(shí)現(xiàn)一對(duì)一的聊天。 (二)總體性能需求 服務(wù)器端性能需求 服務(wù)器需要同時(shí)連接很多個(gè)用戶,并能提供給這些連接用戶所需要的任務(wù)處理請(qǐng)求,這就要求服務(wù)器能同時(shí)處理多個(gè) socket 連接。 當(dāng)一個(gè)窗體出現(xiàn)問題時(shí)能夠及時(shí)的處理,讓主程序不受影響。 (三)本章小結(jié) 需求是開發(fā)的前提,只有明確了需求才能開發(fā)出一個(gè)符合用戶期望的優(yōu)質(zhì)軟件。 11 客戶及 /服務(wù)器模型將網(wǎng)絡(luò)應(yīng)用程序分為客戶和服務(wù)器兩部分。此時(shí),服務(wù)程序被 驚醒 并且為客戶提供服務(wù),對(duì)客戶的請(qǐng)求做出適當(dāng)?shù)姆磻?yīng)。當(dāng)服務(wù)器配置 socket 接口時(shí),它使用 bind()函數(shù)讓 socket 執(zhí)行體登記一個(gè)協(xié)議端口。使用無連接協(xié)議的程序和使用面向連接協(xié)議的服務(wù)器程序之間的主要相似之處是它們都必須對(duì)一個(gè)協(xié)議端口進(jìn)行偵聽。 下面程序行顯示了一個(gè)典型的函數(shù)調(diào)用: result = bind(socket_handle,local_structure socket_address, address_ length) 無連接客戶程序也對(duì)一個(gè)協(xié)議端口進(jìn)行偵聽。與服務(wù)器程序一樣,無連接客戶程序也使用 bind 函數(shù)讓 Socket 執(zhí)行體登記協(xié)議端口。采用 C/S 結(jié)構(gòu) 。 接受來自客戶端的各種信息并分別處理。 處理聊天信息模塊:轉(zhuǎn)發(fā)消息給指定的用戶。因此,針對(duì)這些操作特性,將客戶端模塊進(jìn)行如下劃分: 登陸功能模塊:建立與服務(wù)器的連接并登陸,能顯示登陸錯(cuò)誤信息。 配置信息模塊:提供基本的軟件配置操作。 char receiver[10]。 char password[20]。 }online_users_t。 unsigned int status。 unsigned int new。 char dateserial[20]。 四、軟件流程 本節(jié)主要敘述了該軟件的整體運(yùn)作流程,包括服務(wù)器和客戶端對(duì)消息的處理等流程,通過本節(jié)將能夠?qū)浖墓ぷ髁鞒痰玫揭粋€(gè)總體的 認(rèn)識(shí)。當(dāng)用戶點(diǎn)擊在線好友時(shí)便會(huì)彈出一個(gè)聊天信息窗體,該窗體用于發(fā)送和接收用戶的聊天信息。 (一)服務(wù)器主要函數(shù)和變量 套接字描述字: int sockfd, client_sockfd 套接字地址結(jié)構(gòu): struct sockaddr_in servAddr, cliAddr 線程 id 標(biāo)識(shí): pthread_t pthd 線程調(diào)用函數(shù): void gif_handle_client(int client_sockfd) 服務(wù)器主體函數(shù)只負(fù)責(zé)了套接字的創(chuàng)建、幫定和監(jiān)聽任務(wù),一旦服務(wù)器接收到了來自客戶端的消息后,就會(huì)創(chuàng)建一個(gè)線程來處理 該連 23 接,當(dāng)線程創(chuàng)建后它就會(huì)調(diào)用該函數(shù)對(duì)客戶消息進(jìn)行處理。 獲取系統(tǒng)時(shí)間函數(shù): char *gif_get_system_time() 該函數(shù)取出當(dāng)前系統(tǒng)時(shí)間并隨消息一同發(fā)出,以便讓用戶能更好的了解到消息是何時(shí)發(fā)出的。 刪 除好友信息處理模塊: 當(dāng)服務(wù)器接收到用戶的該消息請(qǐng)求時(shí),服務(wù)器根據(jù)用戶所提供的好友用戶名來刪除被指定的好友,同時(shí)將用戶聯(lián)系人表進(jìn)行更新,在被刪除的好友的被添加好友表 中將當(dāng)前用戶刪除。 離線消息處理模塊: 當(dāng)服務(wù)器判斷用戶所請(qǐng)求的信息為讀取離線消息后, 服務(wù)器會(huì)去讀用戶的離線消息文件,如果該文件中有被標(biāo)識(shí)為新的離線消息時(shí),服務(wù)器將把該消息提取出來發(fā)送給用戶,同時(shí)把該消息標(biāo)識(shí)為已讀。 在編程時(shí)主要使用 fopen fread fwrite fclose 等函數(shù)對(duì)文件進(jìn)行操作,被打開文件的操作權(quán)限由 fopen 的參數(shù)來決定,讀取控制由 fread 來完成, fwrite 主要負(fù)責(zé)向文件中寫入新的信息。 被添加為好友文件: 該文件中保存了有哪些用戶把當(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ā)送與接收 添加用戶窗口: 當(dāng)用戶電擊主窗口中的 Add 按鈕時(shí)該窗體被激活。 上面的窗體是客戶端用戶在使用中會(huì)經(jīng)常使用到的一些窗口事 28 件,這些部件統(tǒng)一起來 便形成了一套完整的客戶端圖形用戶界面。 QTTreeModel *offline_selected_model:定義離線消息查詢數(shù)據(jù)管理接 口。 Qt_widget_set_sensitive(widget, TRUE):設(shè)置指定控件的敏感度 TRUE 可以點(diǎn)擊 FALSE 則不能點(diǎn)擊。例如: QT_threads_enter()。 該模塊在登陸窗口中收集服務(wù)器的 IP 地址和用戶的用戶名和密碼。之后,程序進(jìn)入主體運(yùn)行狀態(tài),各功能模塊被激活。實(shí)現(xiàn)刷新的方法是,先將以前的樹移除然 后按照新的聯(lián)系人狀態(tài)進(jìn)行樹的繪制。通過對(duì)本章的分析理解將會(huì)對(duì)整個(gè)軟件的設(shè)計(jì)模式和編寫流程有一個(gè)比較深入的了解??蛻舳藞D形界面效果良好,使用起來也簡單易用。 32 參考文獻(xiàn) [1] Stevens[美 ].TCP/IP 詳解 卷 1:協(xié)議 [M].西安:機(jī)械工業(yè)出版社, 2021 [2] Stevens[美 ].UNIX 網(wǎng)絡(luò)編程 (卷 1:套接口 API)第三版 [M].北京:清華大學(xué)出版社, 2021 [3] Stevens[美 ].UNIX 網(wǎng)絡(luò)編程 (卷 2:進(jìn)程間通信 )第二版 [M].北京:清華大學(xué)出版社, 2021 [4] Stevens[美 ].UNIX 環(huán)境高級(jí)編程第二版 [M].北京:人民郵電出版 社 , 2021 [5]Mark Summerfield[英 ].QT 高級(jí)編程 [M].北京: 電子工業(yè)出版社 , 2021 [6]孫瓊 [中 ]. 嵌入式 Linux 應(yīng)用程序開發(fā)詳解 [M].北京:人民郵電出版社, 2021 [7]Dennis C Programming Language[M].北京:機(jī)械工業(yè)版社, 2021 [8] 譚浩強(qiáng) [中 ]. C 程序設(shè)計(jì) [M].北京:清華大學(xué)出版社, 2021 [9] 譚浩強(qiáng) [中 ]. C++程序設(shè)計(jì) [M].北京:清華大學(xué)出版社, 2021 [10] 吳 岳 .linux c 程序設(shè)計(jì)大全 [M].北京:清華大學(xué)出版社 ,2021 [11] 劉明 .魅力起航 .[M].北京:北京華創(chuàng)恒信 , 2021 [12] 陳雙龍 , 朱興權(quán) .嵌入式系統(tǒng)應(yīng)用開發(fā) [M].北京:清華大學(xué)出版社 , 2021 33 致謝 本研究及學(xué)位論文是在我的導(dǎo)師彭會(huì)萍副教授的親切關(guān)懷和悉心指導(dǎo)下完成的。 在此,我還要感謝在一起愉快的度過四年的大學(xué)生活的 07級(jí)各位同門,正是由于你們的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑,直至本文的順利完成。從課題的選擇到項(xiàng)目的最終完成,彭老師都始終給予我細(xì)心的指導(dǎo)和不懈的支持。 作為大學(xué)四年學(xué)習(xí)成果的總結(jié),設(shè)計(jì)和編寫這樣一個(gè)軟件能夠?qū)⑺鶎W(xué)過的知識(shí)綜合運(yùn)用,并在實(shí)踐中得到提高,達(dá)到了預(yù)期的總結(jié)并檢驗(yàn)學(xué)習(xí)成果目的。這款軟件目前所具備的功能已經(jīng)能夠滿足日常的聊天需求。 消息請(qǐng)求成功或失敗 信息: 如果接收到了 GIF_SUCCESS_N_ERROR_MSG 類型的消息,則程序還會(huì)進(jìn)一步的根據(jù)另外一個(gè)標(biāo)識(shí)符判斷是何種系統(tǒng)消息,并通過系統(tǒng)消 31 息窗口顯示給用戶。 消息處理模塊: 當(dāng)客戶端和服務(wù)器建立連接后,客戶端會(huì)創(chuàng)建一個(gè)專門的線程來維護(hù)客戶端和服務(wù)器之間的連接,該線程調(diào) 用函數(shù)根據(jù)從服務(wù)器接收到的消息類型來選擇消息處理模塊。同時(shí)將用戶名寫入消息 30 頭結(jié)構(gòu)體,并將密碼隨同數(shù)據(jù)字段一起發(fā)送給服務(wù)器。 QT_threads_leave()。 Void gif_call_client_for_chat(GtkTreeSelection *selection, gpointer data): 當(dāng)用戶點(diǎn)擊聯(lián)系人時(shí)會(huì)產(chǎn)生一個(gè)消息事件,程序根據(jù)用戶所選擇的聯(lián)系人生成聊天窗口,并對(duì)該窗體進(jìn)行初始化。 enum { CONTACTS_COLUMN_TEXT, STATUS_COLUMN_PIXMAP }。 QTListStore *offline_temp_store:定義一個(gè)離線消息數(shù)據(jù)管 理類型。s id:填寫要添加的好友的 loginid 號(hào) OK: GIF_ADD_CONTACTS_MSG 同時(shí)向服務(wù)器發(fā)送消息請(qǐng)求 系統(tǒng)消息窗口: 當(dāng)用戶的操作成功或者失敗的時(shí)候,系統(tǒng)會(huì)顯示一條消息給用戶,以便提示用戶操作是否成功。 主窗體:該窗體中包含了所有的用戶操作按鈕和好友列表,用戶的操作都在這個(gè)窗體中完成。 在線
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1