實驗二 多點聊天室(1)_第1頁
實驗二 多點聊天室(1)_第2頁
實驗二 多點聊天室(1)_第3頁
實驗二 多點聊天室(1)_第4頁
實驗二 多點聊天室(1)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1 用用Csocket類實現(xiàn)的聊天室程序類實現(xiàn)的聊天室程序1.1 聊天室程序的功能聊天室程序的功能聊天室采用聊天室采用C/S模式模式。服務(wù)器服務(wù)器可以同時與可以同時與多個客戶機多個客戶機建立連接,為建立連接,為多個多個客戶機服務(wù)??蛻魴C服務(wù)。服務(wù)器服務(wù)器接收接收客戶機客戶機發(fā)來的信息,然后將它轉(zhuǎn)發(fā)發(fā)來的信息,然后將它轉(zhuǎn)發(fā)給給聊天室聊天室的其他的其他客戶機,客戶機,從而實現(xiàn)從而實現(xiàn)多個客戶機多個客戶機之間的之間的信息交換,信息交換,服務(wù)器服務(wù)器動動態(tài)統(tǒng)計態(tài)統(tǒng)計進入聊天室的進入聊天室的客戶機數(shù)目客戶機數(shù)目,并顯示出來。,并顯示出來。及時顯示及時顯示新的客戶機新的客戶機進入聊天室進入聊天室和客戶機和

2、客戶機退出聊退出聊天室天室的信息,也轉(zhuǎn)發(fā)給的信息,也轉(zhuǎn)發(fā)給其他的客戶機。其他的客戶機。這個實例程序的技術(shù)要點如下:這個實例程序的技術(shù)要點如下:(1)如何從如何從Csocket類類派生出自己所需的派生出自己所需的WinSocket類類(2)如何利用如何利用CSocketFile類類、Carchive類類和和Csocket類類的合作來實現(xiàn)的合作來實現(xiàn)網(wǎng)絡(luò)進程網(wǎng)絡(luò)進程之間的數(shù)據(jù)傳輸之間的數(shù)據(jù)傳輸.(3)如何利用如何利用鏈表管理鏈表管理多個多個動態(tài)客戶機動態(tài)客戶機的的套接字套接字,實現(xiàn)實現(xiàn)服務(wù)器服務(wù)器和所有的和所有的聊天客戶機所聊天客戶機所顯示信息顯示信息的的同步更新同步更新。下圖是聊天室服務(wù)器程序的

3、用戶界面:下圖是聊天室客戶機程序的用戶界面:1.2 創(chuàng)建聊天室的服務(wù)器端程序創(chuàng)建聊天室的服務(wù)器端程序1.利用利用MFC AppWizzard創(chuàng)建創(chuàng)建服務(wù)器端服務(wù)器端應(yīng)用程序應(yīng)用程序框架框架工程名為工程名為ts,選擇選擇Dialog based的的應(yīng)用程序類型應(yīng)用程序類型,選擇中文(中國),選擇選擇中文(中國),選擇Windows Sockets支持,支持,其他接受系統(tǒng)的其他接受系統(tǒng)的默認值。默認值。所創(chuàng)建的程序?qū)⒆詣觿?chuàng)建所創(chuàng)建的程序?qū)⒆詣觿?chuàng)建兩個類,兩個類,應(yīng)用程序類應(yīng)用程序類CTsApp,對應(yīng)的文件是對應(yīng)的文件是ts.h和和ts.cpp;對話框類對話框類CTsDlg,對應(yīng)的文件是對應(yīng)的文件是

4、tsDlg.h和和tsDlg.cpp2.為為對話框界面對話框界面添加添加控件對象控件對象3.為對話框中的為對話框中的控件對象定義控件對象定義相應(yīng)的相應(yīng)的成員變量成員變量4.創(chuàng)建從創(chuàng)建從Csocket類繼承的派生類繼承的派生類類從從Csocket類派生類派生兩個套接字類兩個套接字類,一個類名為,一個類名為CLSocket,專用于監(jiān)聽,專用于監(jiān)聽客戶機端客戶機端的連接請求,為的連接請求,為它添加它添加OnAccept事件事件處理函數(shù);處理函數(shù);另一個類名為另一個類名為CCSocket,專用于與,專用于與客戶機端客戶機端建建立連接并立連接并交換數(shù)據(jù)交換數(shù)據(jù),為它添加,為它添加OnReceive事件事

5、件處處理函數(shù)。理函數(shù)。這兩個類都要添加一個這兩個類都要添加一個指向?qū)υ捒蝾愔赶驅(qū)υ捒蝾惖牡闹羔樧兞浚褐羔樧兞浚篊TsDlg * m_pDlg;(注意:(注意:CTsDlg 類類我取名為了我取名為了CTalkServerDlg,你們可以自己取名)你們可以自己取名)為為CCSocket添加以下添加以下成員變量成員變量和和成員函數(shù)成員函數(shù)。成員變量:成員變量:CSocketFile *m_pFile; /CSocketFile對象的指對象的指針變量針變量CArchive *m_pArchiveIn; /用于輸入的用于輸入的CArchive對象的對象的指針變量指針變量Carchive * m_pArc

6、hiveOut; /用于輸出的用于輸出的Carchive對象的對象的指針變量指針變量 成員函數(shù):成員函數(shù):void Initialize(); /初始化初始化void SendMessage(CMsg* pMsg) /發(fā)送消息發(fā)送消息void ReceiveMessage(CMsg * pMsg) /接收消息接收消息5. 為為對話框類對話框類添加添加控件對象事件控件對象事件的的響應(yīng)函數(shù)響應(yīng)函數(shù)6.為為CTsDlg對話框類對話框類添加其他的添加其他的成員函數(shù)成員函數(shù)和和成員成員變量:變量:成員變量:成員變量:CLSocket * m_pLSocket; /偵聽套接字偵聽套接字指針變量指針變量CP

7、trList m_connList; /連接連接列表列表成員函數(shù):成員函數(shù):void OnAccept(); /接收接收連接請求連接請求void OnReceive(Csocket * pSocket);/獲取獲取客戶機客戶機的的發(fā)送信息發(fā)送信息void backClients(CMsg * pMsg); /向向聊天室聊天室的的所有的所有的客戶機轉(zhuǎn)發(fā)消息客戶機轉(zhuǎn)發(fā)消息7. 創(chuàng)建專用于創(chuàng)建專用于數(shù)據(jù)傳輸序列化處理數(shù)據(jù)傳輸序列化處理的類的類CMsg為了利用為了利用CSocket類類及其及其派生類派生類可以和可以和CSocketFile對象、對象、Carchive對象對象合作來進行合作來進行數(shù)據(jù)數(shù)據(jù)

8、發(fā)送和接收發(fā)送和接收的特性,構(gòu)造一個專用于的特性,構(gòu)造一個專用于消息傳輸消息傳輸 的類,該類必須從的類,該類必須從Cobject類類派生派生。如下圖所示:。如下圖所示:選擇選擇“插入插入”/“新建類新建類”命令,彈出命令,彈出“New Class”(新建類新建類)對話框,在對話框,在“Classtype”(類類型類類型)處處 選擇選擇Generic Class 在在“name”(名稱名稱)處輸入類名處輸入類名CMsg,在基類的在基類的“Derived From”處輸入處輸入Cobject,單擊單擊“OK”按鈕即可按鈕即可。為為CMsg類添加類添加成員變量成員變量和和成員函數(shù)成員函數(shù)(可參看書可參看書上的文件清單上的文件清單):Cstring m_strText; /字符串成員字符串成員BOOL m_bClose; /是否關(guān)閉狀態(tài)是否關(guān)閉狀態(tài)Virtual void Serialize(Carchive &ar); /序列化序列化函數(shù)函數(shù)8. 添加添加事件函數(shù)事件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論