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

正文內(nèi)容

基于局域網(wǎng)的聊天軟件的設(shè)計與實(shí)現(xiàn)(畢業(yè)論文(參考版)

2024-11-14 02:39本頁面
  

【正文】 ( 13)心跳功能: 在線的 客戶端能 定期的向服務(wù)器發(fā)送心跳命令,避免非正常結(jié)束 iMessaging 后導(dǎo)致的非法的登出。服務(wù)器將打洞的結(jié)果返回給客戶端。 ( 10)查詢會員 或群信息 : iM 會員可以通過查詢界面,查詢指定會員或群的信息。 ( 8)群聊天 :好友能在自己所加的群里,進(jìn)行群聊天,其它人在群里的任何對話均能被接受到。 ( 6)文件傳輸 :好友與好友之間可以任意互相傳輸文件,并且同時支持多個文件的高速傳輸。 ( 4) 添加好友 : iM 會員能夠添加其他用戶為好友,通過對該用戶發(fā)送添加請求,若該會員統(tǒng)一添加,兩會員便成為好友,更新好友列表,可以進(jìn)行好友間的功能。 ( 3)創(chuàng)建 IM 群 :在客戶端下, iM會員可以創(chuàng)建多個 iM 群,客戶端將待創(chuàng)建的信息發(fā)送給服務(wù)器,服務(wù)器返回創(chuàng)建信息。 ( 10)登陸離線日志功能:服務(wù)器可以將所有用戶的登陸和 離線的信息記錄到數(shù)據(jù)庫里,便于管理員進(jìn)行信息察看 2.客戶端功能描述 ( 1)會員登陸 :要想使用 iMessaging 進(jìn)行聊天,就必須在登陸界面進(jìn)行會員登陸,客戶端會發(fā)送驗證的帳號和密碼給服務(wù)器,若驗證通過,就能登陸進(jìn)該 基于局域網(wǎng)的聊天軟件的設(shè)計與實(shí)現(xiàn) 23 帳號,進(jìn)行后續(xù)的服務(wù)功能。 ( 8) UDP 打洞服務(wù):當(dāng) 客戶端無法正常與好友進(jìn)行通訊時,會請求服務(wù)器進(jìn)行 UDP 打洞服務(wù),即是通知另一會員向該申請的好友 IP 和端口發(fā)生一個數(shù)據(jù)包,使其成為信任 IP和端口。 ( 7)心跳功能:為了 防止 客戶端 因非正常退出而導(dǎo)致服務(wù)器誤認(rèn)為其還在線,客戶端會每隔一段時間向服務(wù)器發(fā)送心跳命令,因此服務(wù)器也會每隔一段時間檢測各在線會員是否按時發(fā)送心 跳事件。若成功加入該群,還會更新群成員表。若添加成功,還會更新好友關(guān)系表。該功能主要用于獲取好友列表和群成員列表信息。 ( 2)注冊會員:當(dāng)客戶端發(fā)送了注冊會員命令后, 服務(wù)器會添加注冊的信息到會員表里,并更新在線會員列表,同時返回會員帳號給客戶端。 基于局域網(wǎng)的聊天軟件的設(shè)計與實(shí)現(xiàn) 11 進(jìn)度可行性 鑒于本軟件的目標(biāo)要求和特點(diǎn) ,以及工作量評估 ,能夠保證在預(yù)期的時間內(nèi)完成該聊天軟件的設(shè)計和開發(fā)。后期服務(wù)器升級,維護(hù)需要一定的資金。在查看好友發(fā)送得消息上,創(chuàng)建了信息提示欄面板,給用戶更友好的操作 方式,具有操作可行性。 操作可行性 iMessaging 的操作界面是借鑒 界面設(shè)計而成,操作習(xí)慣完全符合于現(xiàn)在的網(wǎng) 絡(luò)聊天用戶。本人在大一時開始學(xué)習(xí) windows 編程,大二時做過網(wǎng)絡(luò)通信演示的項目,大四實(shí)習(xí)時也是做的 windows 項目,通過三年的學(xué)習(xí)與積累對 MFC框架設(shè)計有深入認(rèn)識 , 并 熟悉 windows 內(nèi)存管理結(jié)構(gòu), DLL 編程,網(wǎng)絡(luò)編程,多線程編程等,能熟練編寫基于 windows下的應(yīng)用程序,能夠獨(dú)立完成 iMessaging的設(shè)計和編碼。除此之外,必須深入理解 socket 編程,能熟練編寫基于 tcp,udp 的網(wǎng)絡(luò)通信。 可行性分析 技術(shù)可行性 iMessaging 聊天軟件是基于 windows 平臺下的應(yīng)用 軟件。 8. 發(fā)送離線消息 。 7. 群聊天 。 基于局域網(wǎng)的聊天軟件的設(shè)計與實(shí)現(xiàn) 10 6. 加入群 。 5. 創(chuàng)建新群 。 4. 文件傳輸 。 3. 好友聊天 。 2. 添加好友 。 任何非會員都可以登陸注冊界面注冊一個自己的 iMessaging賬號 ,今后就可以通過該帳號登陸 iMessaging 進(jìn)行聊天。 3 系統(tǒng)分析 需求分析 根據(jù)現(xiàn)目前聊天軟件的普遍功能優(yōu)勢和缺點(diǎn),以及用戶體驗所反映的情況,總結(jié)歸納出以下幾點(diǎn)需求分析。隨后, B 就會發(fā)送一個消息到 A,NAT 發(fā)現(xiàn)此行為,自動將 A 添加到 B的受信列表中,這樣就可以實(shí)現(xiàn)正常的通訊了。借于此功能,若某一客戶端要與另一客戶端進(jìn)行聊天通訊,若發(fā)現(xiàn)無法 PING 通對方,就可以借助服務(wù)器的功能讓 雙方正常通信,這就是 UDP 打洞技術(shù)。 一般 來講 ,只要發(fā)現(xiàn)該主機(jī)曾經(jīng)主動向該 IP 發(fā)送過信息,那么 NAT 會紀(jì)錄下來,并添加到任信列表里面去。 擴(kuò)展功能 —— 廣域網(wǎng)聊天 由于該課題是基于局域網(wǎng)的聊天軟件,那如何實(shí)現(xiàn)廣域網(wǎng)的聊天呢?實(shí)際上,在廣域網(wǎng)中實(shí)現(xiàn)基于 UDP 的聊天功能幾乎不可能,那是因為大多數(shù)的電腦用戶在 基于局域網(wǎng)的聊天軟件的設(shè)計與實(shí)現(xiàn) 9 其小型網(wǎng)內(nèi)都會有一道 NAT 屏障擋住,由于 UDP 是不可靠的, NAT 發(fā)現(xiàn)當(dāng)前 IP和端口是不可信任的,那么就會將該數(shù)據(jù)包擋在墻外,這樣就無法實(shí)現(xiàn)聊天功能。 由于多個線程在同時運(yùn)行的時候,會對共享數(shù)據(jù)進(jìn)行訪問或修改,那么就必須要注意 數(shù)據(jù)同步, windows 給我們提供了多種數(shù)據(jù)同步的方法,比如基于用戶模式的原子鎖,臨界 區(qū), Slim 讀寫鎖 等,還有基于內(nèi)核模式的內(nèi)核對象,如互斥對象,事件對象,信號量,條件變量等 。若創(chuàng)建成功,該函數(shù)會返回一個 HANDLE,這個句柄標(biāo)示了剛創(chuàng)建的線程內(nèi)核對象,當(dāng)線程創(chuàng)建成功后,必須調(diào)用 CloseHandle 函數(shù)將其關(guān)閉,這是因為如果不關(guān)閉該內(nèi)核句柄,當(dāng) 線程退出后,操作系統(tǒng)并沒有銷毀該線程,造成資源浪費(fèi),這是因為獲取一個實(shí)內(nèi)核句柄都會增加內(nèi)核使用計數(shù),只有當(dāng)該內(nèi)核對象的使用計數(shù)為 0時,才會銷毀該內(nèi)核對象,線程也是如此。常用的創(chuàng)建線程函數(shù)為 CreateThread 和 _beginthreadex,兩函數(shù)功能幾乎一樣(在某些特殊地方, 兩者用法需注意,推薦用后者 ),在創(chuàng)建前必須定義一個按照線程函數(shù)原型的函數(shù), 將其地址傳給創(chuàng)建線程函數(shù),讓操作系統(tǒng)知道即將從哪個地方運(yùn)行線程。有一個概念容易搞錯,就是進(jìn)程是否能獲得 CPU時間片?實(shí)際上,進(jìn)程是無法獲取 CPU 時間片,只有該進(jìn)程里的線程才能,所以說,真正執(zhí)行代碼的是線程,而進(jìn)程只能管理線程,管理內(nèi)存等。 在 windows 系統(tǒng)中,進(jìn)程和線程是最為重要的兩個概念,因為整個系統(tǒng)就是基于進(jìn)程和線程的。實(shí)際上,正如前面所說,操作系統(tǒng)并非是給某一程序分配時間片,準(zhǔn)確的說是給這個程序里的某一 線 程分配了時間片。但實(shí)際上在單CPU 的機(jī)子上,這些程序并不是同時在運(yùn)行(即便是在多 CPU 的電腦上,也不可能所有程序同時運(yùn)行),所有的程序都以某種調(diào)度算法,按照優(yōu)先級,依次獲取CPU 時間,每當(dāng)一個程序獲得 CPU 時間后,它就會得到運(yùn)行,而當(dāng)運(yùn)行一段時間后,操作系統(tǒng)會將其暫停,再接換新的線程來運(yùn)行。要理解多線程編成就必須從以下幾個方面理解:一、操作系統(tǒng)多任務(wù)概念;二、 線程和進(jìn)程的聯(lián)系與區(qū)別;三、 如何創(chuàng)建并管理 銷毀 一個 線程 ;四、何謂線程同步,怎樣同步。 多線程編程 多線程編成是網(wǎng)絡(luò)編成的基礎(chǔ),幾乎所有的網(wǎng)絡(luò)編 程都將涉及到多個線程的數(shù)據(jù)傳輸 ,并且還要實(shí)現(xiàn)界面和數(shù)據(jù)處理互不影響 。由于基于 UDP的文件傳輸在網(wǎng)絡(luò)環(huán)境差的情況下可能會大量丟包,因此不斷重復(fù)發(fā)包會導(dǎo)致網(wǎng)絡(luò)擁塞( TCP 在內(nèi)部實(shí)現(xiàn)了流量控制,因此發(fā)生網(wǎng)絡(luò)擁塞可能性很?。@是其最大的缺陷。我們可以模仿 TCP 的通訊機(jī)制來實(shí)現(xiàn)可靠的 UDP 傳輸。 基于 UDP 的文件傳輸 要實(shí)現(xiàn)文件傳輸?shù)姆绞接泻芏喾N,常用的方式就是像 MSN 那樣基于 TCP 的文件傳輸,這樣的傳輸很穩(wěn)定,可靠,容易實(shí)現(xiàn),但傳輸?shù)乃俣?和效率會比較慢。所以CAsyncSocket 的派生類,只需要在這些虛函數(shù)里添加發(fā)送和接收的代碼。 windows 提供了一個 CAysncSocke 異步 套接字類,它是基于 非阻塞 模型,對 Socket 函數(shù)進(jìn)行了良好的 封裝 , CAsyncSocket::Create()有一個參數(shù)指明了你想要處理哪些Socket事件,你關(guān)心的事件被指定以后,這個 Socket默認(rèn)就被用作了異步方式。目前, windows 提供了多種套接字 IO模型,如阻塞式 IO,非阻塞式 IO,事件 IO,重疊 IO(可提醒 IO),完成端口等,每一種 IO 模型都具有自身的優(yōu)勢和缺陷,其中完成端口可以達(dá)到目前 windows 平臺下最高 IO 性能。 其中 TCP協(xié)議就是基于流套接字,而 UDP 協(xié)議基于數(shù)據(jù)報套接字, iMessaing 聊天程序主要基于 UDP 協(xié)議,而在特殊操作下又采用 TCP 協(xié)議保證其數(shù)據(jù)的可靠性。數(shù)據(jù)報套接字的一個重要特點(diǎn)是它保留了記錄邊界。數(shù)據(jù)報套接字支持雙向的數(shù)據(jù)流, 基于局域網(wǎng)的聊天軟件的設(shè)計與實(shí)現(xiàn) 6 但并不保證是可靠,有序,無重復(fù)的。用戶目前可以使用兩種套接字,即流套接字和數(shù)據(jù)報套接字。應(yīng)用程序一般僅在同一類的套接字間通訊。各種進(jìn)程使用這個域互相之間用 Inter協(xié)議族來進(jìn)行通訊( Windows Sockets 以上的版本支持其他的域,例如Windows Sockets 2)。套接字通常和同一個域中的套接字交換數(shù)據(jù)(數(shù)據(jù)交換也可能穿越域的界限,但這時一定要執(zhí)行某種解釋程序)。套接字存在于通訊域中。在這一端上你可以找到與其對應(yīng)的一個名字。 它實(shí)現(xiàn)了標(biāo)準(zhǔn) socket 編成的函數(shù),提供了一套屬于 windows 下的套接子 API。其移出消息對應(yīng)的是 WM_MOUSELEAVE,移入按鈕消息是WM_MOUSEHOVER,分別定義其消息相應(yīng)函數(shù),這樣就能實(shí)現(xiàn)狀態(tài)的更替,再進(jìn)行相應(yīng)的繪制。具體重繪方法就是采用前面提到的 OWNERDRAW屬性,重載虛函數(shù) DrawItem。那么因此就必須重新 創(chuàng)建一個 派生 于CButton 的 按鈕 類,由于該類將應(yīng)用于本軟件的所有按鈕控件,因此做成可貼狀態(tài) 圖的按鈕控件最為合適。 iMessaging 采用了后者進(jìn)行對列表控件的重繪,實(shí)現(xiàn)了好友列表控件,群列表控件類。兩種方式有不同之處,前者需要對整個 ListCtrl繪制,必須考慮到每一個 item 項的繪制情況。 CListCtrl重繪的方法有兩種 ,一種是采用微軟提供的 OWNERDRAW屬性 ,通過重載 DrawItem 虛函數(shù)來進(jìn)行重繪。 對話框的繪制比較容易, MFC 為對話框提供了 OnPaint 消息相應(yīng)函數(shù),但 是在該函數(shù)下繪制并不能從根本上重繪對話框,因為該函數(shù)還會調(diào)用CDialog::OnPaint 函數(shù), 在內(nèi)部還 會 再去 重繪背景,因此要實(shí)現(xiàn) 完全意義上的重繪背景,就必須響應(yīng) WM_ERASEBKGND 消息, 在消息響應(yīng)函數(shù)里實(shí)現(xiàn)我們自己的繪制方法,然后直接返回 TRUE,不再調(diào)用 CDialog::OnEraseBkgnd()函數(shù)。隨后可以創(chuàng)建一張兼容位圖,需要繪制的 圖像將 ,函數(shù)原型如下 BOOL CBitmap::CreateCiompatibleBitmap(CDC* pDC,int nWidth,int nHeight)。雙緩沖繪圖就是將待 繪制的圖片保存到內(nèi)存里,當(dāng)需要繪制到屏幕上時,再一次性投遞到設(shè)備描述表里,這樣既避免了窗口重繪時的閃爍,又提高了繪制的速度和效率。 iMessaging 采用了的窗體背景重繪, listctrl 自繪,按鈕貼圖等方式實(shí)現(xiàn)了操作界面的美觀 。而正由于微軟將這些控件封裝得很好,對于要修改它的屬性,派生一些美觀的子控件難度就顯得比較大。 的確 , MFC 給我們提供了很便捷的編程方式,我們幾乎可以不需要寫任何代碼就能生成一個帶有菜單,工具欄和視圖的窗口, MFC也提供了豐富的控件類 ,在設(shè)計對話框的時候,我們也只需要直接將控件拖進(jìn)對話框里,而不用寫任何代碼。 系統(tǒng) 實(shí)現(xiàn)技術(shù) MFC 窗口控件重繪 MFC(Microsoft Foundation Classes),是一個微軟公司提供的類庫( class libraries),以 C++類的形式封裝了 Windows 的 API,并且包含一個應(yīng)用程序框架,以減少應(yīng)用程序開發(fā)人員的工作量。但隨著其功能日益豐富、應(yīng)用日益廣泛,特別是即時通信增強(qiáng)軟件的某些功能如 IP電話等,已經(jīng)在分流和替代傳統(tǒng)的電信業(yè)務(wù),使得電信運(yùn)營商不得不采取措施應(yīng)對這種挑戰(zhàn)。百度Hi具備文字消息、音視頻通話、文件傳輸?shù)裙δ?,您可通過它找到志同道合的朋友,并隨時與好友聯(lián)絡(luò)感情;另一類是企業(yè)用 IM,簡稱 EIM,如: E話通, UC, EC 企業(yè)即時通信軟件, UcSTAR、商務(wù)通等。 現(xiàn)在國內(nèi)的即時通信工具按照使用對象分為兩類:一類是個人 IM,如:,百度 hi,網(wǎng)易泡泡,盛大圈圈,淘寶旺旺等等。 1998年當(dāng) ICQ注冊用戶數(shù)達(dá)到 1200 萬時,被 AOL看中,以 。目前,微軟、 AOL、 Yahoo、 UcSTAR 等重要即時通信提供 商都 提供通過手機(jī)接入互聯(lián)網(wǎng)即時通信的業(yè)務(wù),用戶可以通過手機(jī)與其他已經(jīng)安裝了相應(yīng)客戶端軟件的手機(jī)或電腦收發(fā)消息??蛻舳瞬糠謩t是實(shí)現(xiàn)用戶的操作界面,實(shí)現(xiàn)用戶間的聊天或者文件發(fā)送, 以及群聊
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1