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

正文內(nèi)容

基于局域網(wǎng)的聊天軟件的設(shè)計(jì)與實(shí)現(xiàn)(更新版)

2025-01-20 10:20上一頁面

下一頁面
  

【正文】 的發(fā)展前景。在教育方面,聊天工具帶給我們新式的教學(xué)體驗(yàn),使在線文字,語音,視頻教學(xué)成為了可能,更重要的是,人們可以分享彼此的思想和經(jīng)驗(yàn),促進(jìn)精神和教育文化的發(fā)展。 1996 年 11 月, ICQ 是首個(gè)廣泛被非 UNIX/Linux 使用者用 于 網(wǎng)路的即時(shí)通 訊軟體。該軟件主要采用 UDP 協(xié)議,但某些特殊情況也采用了 TCP 協(xié)議。 1998年當(dāng) ICQ注冊(cè)用戶數(shù)達(dá)到 1200萬時(shí),被 AOL看中,以 。 系統(tǒng)實(shí)現(xiàn)技術(shù) MFC 窗口控件重繪 MFC(Microsoft Foundation Classes),是一個(gè)微軟公司提供的類庫( class libraries),以 C++類的形式封裝了 Windows 的 API,并且包含一個(gè)應(yīng)用程序框架,以減少應(yīng)用程序開發(fā)人員的工作量。雙緩沖繪圖就是將待繪制的圖片保存到內(nèi)存里,當(dāng)需要繪制到屏幕上時(shí),再一次性投遞到設(shè)備描述表里,這樣既避免了窗口重繪時(shí)的閃爍,又提高了繪制的速度和效率。兩種方式有不同之處,前者需要對(duì)整個(gè) ListCtrl繪制,必須考慮到每一個(gè) item 項(xiàng)的繪制情況。其移出消息對(duì)應(yīng)的是 WM_MOUSELEAVE,移入按鈕消息是WM_MOUSEHOVER,分別定義其消息相應(yīng)函數(shù),這樣就能實(shí)現(xiàn)狀態(tài)的更替,再進(jìn)行相應(yīng)的繪制。套接字通常和同一個(gè)域中的套接字交換數(shù)據(jù)(數(shù)據(jù)交換也可能穿越域的界限,但這時(shí)一定要執(zhí)行某種解釋程序)。數(shù)據(jù)報(bào)套接字支持 雙向的數(shù)據(jù)流, 基于局域網(wǎng)的聊天軟件的設(shè)計(jì)與實(shí)現(xiàn) 6 但并不保證是可靠,有序,無重復(fù)的。 windows 提供了一個(gè) CAysncSocke 異步 套接字類,它是基于 非阻塞 模型,對(duì) Socket 函數(shù)進(jìn)行了良好的 封裝 , CAsyncSocket::Create()有一個(gè)參數(shù)指明了你想要處理哪些Socket 事件,你關(guān)心的事件被指定以后,這個(gè) Socket 默認(rèn)就被用作了異步方式。由于基于UDP 的文件傳輸在網(wǎng)絡(luò)環(huán)境差的情況下可能會(huì)大量丟包,因此不斷重復(fù)發(fā)包會(huì)導(dǎo)致網(wǎng)絡(luò)擁塞( TCP 在內(nèi)部實(shí)現(xiàn)了流量控制,因此發(fā)生網(wǎng)絡(luò)擁塞可能性很?。?,這是其最大的缺陷。實(shí)際上,正如前面所說,操作系統(tǒng)并非 是給某一程序分配時(shí)間片,準(zhǔn)確的說是給這個(gè)程序里的某一線程分配了時(shí)間片。若創(chuàng)建成功,該函數(shù)會(huì)返回一個(gè) HANDLE,這個(gè)句柄標(biāo)示了剛創(chuàng)建的線程內(nèi)核對(duì)象,當(dāng)線程創(chuàng)建成功后,必須調(diào)用 CloseHandle 函數(shù)將其關(guān)閉,這是因?yàn)槿绻魂P(guān)閉該內(nèi)核句柄,當(dāng)線程退出后,操作系統(tǒng)并沒有銷毀該線程,造成資源浪費(fèi),這是因?yàn)楂@取一個(gè)實(shí)內(nèi)核句柄都會(huì)增加內(nèi)核使用計(jì)數(shù),只有當(dāng)該內(nèi)核對(duì)象的使用計(jì)數(shù)為 0時(shí),才會(huì)銷毀該內(nèi)核對(duì)象,線程也是如此。借于此功能,若某一客戶端要與另一客戶端進(jìn)行聊天通訊,若發(fā)現(xiàn)無法 PING 通對(duì)方,就可以借助服務(wù)器的功能讓雙方正常通信,這就是 UDP 打洞技術(shù)。 2. 添加好友。 基于局域網(wǎng)的聊天軟件的設(shè)計(jì)與實(shí)現(xiàn) 10 6. 加入群。除此之外,必須深入理解 socket 編程,能熟練編寫基于 tcp,udp 的網(wǎng)絡(luò)通信。后期服務(wù)器升級(jí),維護(hù)需要一定的資金。若添加 成功,還會(huì)更新好友關(guān)系表。 ( 10)登陸離線日志功能:服務(wù)器可以將所有用戶的登陸和離線的信息記錄到數(shù)據(jù)庫里,便于管理員進(jìn)行信息察看 基于局域網(wǎng)的聊天軟件的設(shè)計(jì)與實(shí)現(xiàn) 23 2.客戶端功能描述 ( 1)會(huì)員登陸:要想使用 iMessaging 進(jìn)行聊天,就必須在登陸界面進(jìn)行會(huì)員登陸,客戶端會(huì)發(fā)送驗(yàn)證的帳號(hào)和密碼給服務(wù)器 ,若驗(yàn)證通過,就能登陸進(jìn)該帳號(hào),進(jìn)行后續(xù)的服務(wù)功能。 ( 8)群聊天:好友能在自己所加的群里,進(jìn)行群聊天,其它人在群里的任何對(duì)話均能被接受到。 iMessaging 程序里根據(jù)CAsyncSocket 派生了一個(gè) CIMSocket 類,服務(wù)器用該類進(jìn)行數(shù)據(jù)的發(fā)送與接收,并將接收后的數(shù)據(jù)按照命令類型分發(fā)給各 處理子模塊。若發(fā)現(xiàn)有數(shù)據(jù)到來,則分析數(shù)據(jù)包類型,創(chuàng)建相關(guān)的處理線程執(zhí)行相關(guān)的處理操作,這樣可以在同一時(shí)間同時(shí)處理多個(gè)任務(wù)請(qǐng)求,提高了服務(wù)器的工作效率。 該對(duì) 話框 類提供 一個(gè) 內(nèi)部 接口函 數(shù) BOOL CIMessageDlg::CreateUDPSocket(),用于創(chuàng)建 CIMSocket 類。 ( 10)查詢會(huì)員或群信息: iM 會(huì)員可以通過查詢界面,查詢指定會(huì)員或群的信息。 ( 3)創(chuàng)建 IM 群:在客戶端下, iM會(huì)員可以創(chuàng)建多個(gè) iM 群,客戶端將待創(chuàng)建的信息發(fā)送給服務(wù)器,服務(wù)器返回創(chuàng)建信息。若成功加入該群,還會(huì)更新群成員表。 基于局域網(wǎng)的聊天軟件的設(shè)計(jì)與實(shí)現(xiàn) 11 進(jìn)度可行性 鑒于本軟件的目標(biāo)要求和特點(diǎn),以及工作量評(píng)估,能夠保證在預(yù)期的時(shí)間內(nèi)完成該聊天軟件的設(shè)計(jì)和開發(fā)。本人在大一時(shí)開始學(xué)習(xí) windows 編程,大二時(shí)做過網(wǎng)絡(luò)通信演示的項(xiàng)目,大四實(shí)習(xí)時(shí)也是做的 windows 項(xiàng)目,通過三年的學(xué)習(xí) 與積累對(duì) MFC框架設(shè)計(jì)有深入認(rèn)識(shí),并熟悉 windows 內(nèi)存管理結(jié)構(gòu), DLL 編程,網(wǎng)絡(luò)編程,多線程編程等,能熟練編寫基于 windows 下的應(yīng)用程序,能夠獨(dú)立完成 iMessaging 的設(shè)計(jì)和編碼。 7. 群聊天。 3. 好友聊天。隨后, B就會(huì)發(fā)送一個(gè)消息到 A, NAT發(fā)現(xiàn)此行為,自動(dòng)將 A添加到 B的受信列表中,這樣就可以實(shí)現(xiàn)正常的通 訊了。 由于多個(gè)線程在同時(shí)運(yùn)行的時(shí) 候,會(huì)對(duì)共享數(shù)據(jù)進(jìn)行訪問或修改,那么就必須要注意數(shù)據(jù)同步, windows 給我們提供了多種數(shù)據(jù)同步的方法,比如基于用戶模式的原子鎖,臨界區(qū), Slim 讀寫鎖等,還有基于內(nèi)核模式的內(nèi)核對(duì)象,如互斥對(duì)象,事件對(duì)象,信號(hào)量,條件變量等。 在 windows 系統(tǒng)中,進(jìn)程和線程是最為重要的兩個(gè)概念,因?yàn)檎麄€(gè)系統(tǒng)就是基于進(jìn)程和線程的。 多線程編程 多線程編成是網(wǎng)絡(luò)編成的基礎(chǔ),幾乎所有的網(wǎng)絡(luò)編程都將涉及到多個(gè)線程的數(shù)據(jù)傳輸,并且還要實(shí)現(xiàn)界面和數(shù)據(jù)處理互不影響。所以CAsyncSocket 的派生類,只需要在這些虛函數(shù)里添加發(fā)送和接收的代碼。數(shù)據(jù)報(bào)套接字的一個(gè)重要特點(diǎn)是它保留了記錄邊界。各種進(jìn)程使用這個(gè)域互相之間用 Inter協(xié)議族來進(jìn)行通訊( Windows Sockets 以上的版本支持其他的域,例如Windows Sockets 2)。 它實(shí)現(xiàn)了標(biāo)準(zhǔn) socket 編成的函數(shù),提供了一套屬于 windows 下的套接子 API。 iMessaging 采用了后者進(jìn)行對(duì)列表控件的重繪,實(shí)現(xiàn)了好友列表控件,群列表控件類。隨后可以創(chuàng)建一張兼容位圖,需要繪制的圖像將,函數(shù)原型如下 BOOL CBitmap::CreateCiompatibleBitmap(CDC* pDC,int nWidth,int nHeight)。 的確, MFC 給我們提供了很便捷的編程方式,我們幾乎可以不需要寫任何代碼就能生成一個(gè)帶有菜單,工具欄和視圖的窗口, MFC也提供了豐富的控件類,在設(shè)計(jì)對(duì)話框的時(shí)候,我們也只需要直接將控件拖進(jìn)對(duì)話框里,而不用寫任何代碼。 現(xiàn)在國內(nèi)的即時(shí)通信工具按照使用對(duì)象分為兩 類:一類是個(gè)人 IM,如:,百度 hi,網(wǎng)易泡泡,盛大圈圈,淘寶旺旺等等。 iMessaging 實(shí)現(xiàn)了在局域網(wǎng)下進(jìn)行個(gè)人聊天 ,群聊天 ,文件發(fā)送等的功能,其組成部份是客戶端和服務(wù)器兩大部分。 這 引導(dǎo) 著 使用者同時(shí)執(zhí)行兩個(gè)以上的即時(shí)通訊軟體,或者他們可以使用支援多協(xié)定的終端軟體,如 Gaim、Trillian 或 Jabber。綜觀聊天工具的發(fā)展史,從單一的一對(duì)一聊天,到多對(duì)多的互動(dòng)式聊天,聊天工具正在進(jìn)行了一場(chǎng)人類思想交流觀的革命。 關(guān)鍵詞 :聊天軟件, 即時(shí)通訊 基于局域網(wǎng)的聊天軟件的設(shè)計(jì)與實(shí)現(xiàn) Abstract Today, with the rapid development of the work, the work concept is no longer new to the world. Because of the birth of instant messaging software, precisely, the online world was booming. Instant messaging software to provide people with a munication platform that gradually developed into a special kind of derivative of munity, but from such a munity will affect people39。 iMessaging 局域網(wǎng)聊天軟件正是介于這樣的發(fā)展背景之下開發(fā)而成,后續(xù)將探索更為便捷,更多元化的聊天模式,隨著后期的逐步完善,將會(huì)提高人們學(xué)習(xí),辦公,交流的效率,提供更為直觀的聊天方式,開創(chuàng)聊天軟件的新局面。在工作方面,人們利用聊天室和聊天群招開工作會(huì)議,利用聊天工具的文件服務(wù)實(shí)現(xiàn)文件共享和文件傳輸,提高了工作的效率。在 ICQ的介紹之后 ,同時(shí)在許多地方有一定數(shù)量的即時(shí)通訊方式發(fā)展,且各式的即時(shí)通訊 基于局域網(wǎng)的聊天軟件的設(shè)計(jì)與實(shí)現(xiàn) 2 程式有獨(dú)立的協(xié)定,無法彼此互通。比如,命令消息和聊天消息均基于 UDP 協(xié)議,而獲取用戶列表則采用的是 TCP 協(xié)議,兩種協(xié)議的混用更能保證客戶端與服務(wù)器通訊時(shí)的效 率和準(zhǔn)確性。目前 ICQ 有 1億多用戶,主要市場(chǎng)在美洲和歐洲,已成為世界上最大的即時(shí)通信系統(tǒng)。其中包含的類包含大量 Windows 句柄封裝類和很多 Windows 的內(nèi)建控件和組件的封裝類。BOOL CDC::CreatieCompatibleDC(CDC* pDC)函數(shù)用來創(chuàng)建一個(gè)兼容 DC,即在內(nèi)存里創(chuàng)建一個(gè) DC,以后的任何繪圖所需的操作,如選用何種畫筆,畫刷,字體等,都將在內(nèi)存中進(jìn)行,而不是在真實(shí)設(shè)備上下文里。而后者相對(duì)比較簡便,系統(tǒng)會(huì)在四個(gè)狀態(tài)的時(shí)候通知重繪,這四 個(gè)狀態(tài)分別是繪制前,繪制后,擦除前,擦除后,我們就可以按照自己的需要去繪制,并且我們只用考慮其中一項(xiàng) item 的繪制方 基于局域網(wǎng)的聊天軟件的設(shè)計(jì)與實(shí)現(xiàn) 5 法,就可以應(yīng)用于所有項(xiàng)。 Winsock 編程 Windows 下網(wǎng)絡(luò)編程的規(guī)范- Windows Sockets 是 Windows 下得到廣泛應(yīng)用的、開放的、支持多種協(xié)議的網(wǎng)絡(luò)編程接口。 Windows Sockets 規(guī)范支持單一的通訊域,即 Inter域。也就是說,一個(gè)從數(shù)據(jù)報(bào)套接字接收信息的進(jìn)程有可能發(fā)現(xiàn)信息重復(fù)了,或者和發(fā)出時(shí)的順序不同。CAsyncSocket 的 Create()函數(shù),除了創(chuàng)建了一個(gè) SOCKET 以外,還創(chuàng)建了個(gè)CSocketWnd 窗口對(duì)象,并使用 WSAAsyncSelect()將這個(gè) SOCKET 與該窗口對(duì)象關(guān)聯(lián),以讓該窗口對(duì)象處理來自 Socket 的事件 (消息 ),然而 CSocketWnd 收到Socket 事件之后,只是簡單地回調(diào) CAsyncSocket::OnReceive()等虛函數(shù)。為了保證 速度,就會(huì)造成網(wǎng)絡(luò)擁塞,為了網(wǎng)絡(luò)的暢通,就不能保證速度,兩種傳輸方式的各據(jù)優(yōu)劣勢(shì)。因此,在多任務(wù)操作系統(tǒng)中(若有線程的話),線程將是運(yùn)行的最小單位。常用的銷毀線程函數(shù)是 ExitThread,TermelateThread 函數(shù),但推薦使用函數(shù)返回的方式結(jié)束進(jìn)程,因?yàn)椴僮飨到y(tǒng)會(huì)自動(dòng)調(diào)用 ExitThread 函數(shù),并回收分配的內(nèi)存資源。原理可以簡述為,若客戶端 A 無法與另一客戶端 B通訊, A可以向服務(wù)器發(fā)送打洞請(qǐng)求,讓服務(wù)器告知 B客戶端 A此時(shí)要與你進(jìn)行通訊,你必需將其 A 添加到你的受信任列表里。會(huì)員可以通過查詢 iM 會(huì)員,添加自己的好友,成為好友后,兩會(huì)員便可以自由的通訊 ,還可以實(shí)現(xiàn)后續(xù)的多種功能。非群會(huì)員可以申請(qǐng)加入某個(gè)已存在的群,若該群的管理員批準(zhǔn)了該申請(qǐng),該會(huì)員便成為該群的一員。另外,還應(yīng)具備多線程編程,線程同步,數(shù)據(jù)庫操作的基本知識(shí)和技術(shù)。若僅局限在局域網(wǎng)里使用本軟件,那經(jīng)濟(jì)成本較低,具有經(jīng)濟(jì)可行性。 ( 5)加入群:該功能同添加好友功能類似,服務(wù)器會(huì)將加入請(qǐng)求發(fā)送到群管理員處,管理員的回應(yīng)也將被服務(wù)器轉(zhuǎn)發(fā)回客戶端。 ( 2)注冊(cè)會(huì)員:若第一次使用 iMessaging,沒有 iM 帳號(hào)的話,可以在登陸界面下進(jìn)行注冊(cè),客戶端會(huì)將待注冊(cè)的信息發(fā)送給服務(wù)器處理,若注冊(cè)成功,用戶會(huì)得到一個(gè) iM帳號(hào)。 ( 9)退出登陸: iM 會(huì)員退出登陸時(shí)將發(fā)送命令給服務(wù)器,服務(wù)器獲得退出命令后將更新在線列表,并通知所有該會(huì)員的好友, 更新他們的好友在線列表。創(chuàng)建該類在CIMessageDlg 對(duì)話框類(服務(wù)器運(yùn)行的主窗口)的 OnInitDialog 函數(shù)里,每當(dāng)程序運(yùn)行時(shí)都將自動(dòng)調(diào)用該函數(shù),進(jìn)行對(duì)話框的初始化操作,這是將是創(chuàng)建CIMSocket 類的 最佳 場(chǎng)所。程序執(zhí)行流程圖如下: 基于局域網(wǎng)的聊天軟件的設(shè)計(jì)與實(shí)現(xiàn) 26 創(chuàng) 建 主 窗 口創(chuàng) 建 CIMSocket類進(jìn) 行 數(shù) 據(jù) 接 收 和 發(fā)送進(jìn) 入 數(shù) 據(jù) 等 待 狀 態(tài)數(shù) 據(jù) 到 來 , 響 應(yīng)OnRecevie函 數(shù) ,讀 取 數(shù) 據(jù) , 并 加 入到 數(shù) 據(jù) 包 隊(duì) 列 里開 始創(chuàng) 建 接 收 線 程 圖 基于 UDP 的接收數(shù)據(jù)的程序流程圖 接 收 線 程 讀 取 數(shù) 據(jù)包 隊(duì) 列 元 素是 否 有 元 素處 理 并 創(chuàng) 建 對(duì) 應(yīng)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1