資源描述:
《基于mfc的聊天程序的設(shè)計與實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、軟件透視·基于MFC的聊天程序的設(shè)計與實現(xiàn)馮曉靜1馬毓堃2王玉爽1(1.河南農(nóng)業(yè)職業(yè)學(xué)院電子信息工程系,河南鄭州450000;2.鄭州城市職業(yè)學(xué)院,河南新密452370)摘要:基于網(wǎng)絡(luò)聊天應(yīng)用的普及,本文采用VC++2008為開發(fā)平臺,采用MFC控件設(shè)計聊天程序的對話框,以CAsyncSocket類為基礎(chǔ),設(shè)計實現(xiàn)一個基于TCP的點對點聊天程序。程序運行良好,可實現(xiàn)兩臺計算機間的實時數(shù)據(jù)通信。關(guān)鍵詞:VC++;MFC;CAsyncSocket;聊天程序;實時通信在互聯(lián)網(wǎng)技術(shù)發(fā)達(dá),信息交互越來越便捷的今天,可以實private:CMysocketm_sCon
2、nectSocket;現(xiàn)即時通訊的聊天工具廣泛地應(yīng)用于人們的網(wǎng)絡(luò)生活。本文就CMysocketm_sListenSocket;//定義監(jiān)聽、連接的成員是以VC++2008為平臺,采用MFC控件設(shè)計聊天程序的對話框,以變量。CAsyncSocket類為基礎(chǔ),實現(xiàn)基于TCP的點對點聊天工具。本聊(2)構(gòu)造一個套接字CAsyncSocketclient,并在天工具通過輸入服務(wù)器端的IP地址將客戶端和服務(wù)器端連在一InitInstance方法中初始化套接字。起,實現(xiàn)兩者間的實時通信。(3)從CAsyncSocke類中派生一個子類Cmysocket。1原理介紹(4)
3、應(yīng)用主對話框的頭文件,并對主對話框進(jìn)行前導(dǎo)聲明。VC++是Microsoft公司開發(fā)的一種基于C/C++語言的集代碼(5)改寫窗口類的OnReceive事件,調(diào)用主對話框的方法處編輯、編譯、連接、調(diào)試等功能與一體的工具。MFC(Microsoft理服務(wù)器傳來的數(shù)據(jù):FoundationClasses)是在VC++平臺下,以C++類的形式封裝了voidCclientDlg::OnReceive()Windows的API,MFC中的各種類結(jié)合起來構(gòu)成了一個應(yīng)用程序{char*lpBuf=newchar[1024];框架,這個框架定義了應(yīng)用程序的輪廓、提供了用戶
4、接口的標(biāo)準(zhǔn)intiBufsize=1024;實現(xiàn)方法。intiRcvd;Socket又稱為套接字,是網(wǎng)絡(luò)通信的基本構(gòu)件。它由一個CStringstrRecvd;短整數(shù)表示,即一個句柄,代表網(wǎng)絡(luò)協(xié)議中的一組數(shù)據(jù),該數(shù)iRcvd=m_sConnectSocket.據(jù)包含了通信雙方的IP地址和當(dāng)前的連接狀態(tài)等信息,它可以Receive(lpBuf,iBufsize,0);通過這個端口與任何一個具有Socket接口的計算機通信。if(iRcvd==0)WinSock即WindowsSocket規(guī)范,提供了許多套接字函{CStringm_ErrorMsg;數(shù)。在VC
5、++的MFC類庫中,有兩個與Winsock相關(guān)的類,分別為m_ErrorMsg=GetErrorMsg();CAsyncSocket類和Csocket類。這兩個類都對WinSockAPI函數(shù)MessageBox(m_ErrorMsg);進(jìn)行了封裝,其中,CAsyncSocket類提供的許多方法直接對應(yīng)return;}于低層的API函數(shù)。else{lpBuf[iRcvd]=NULL;利用CAsyncSocket創(chuàng)建通信的過程如下:首先需要調(diào)用構(gòu)strRecvd=lpBuf;造函數(shù)創(chuàng)建CAsyncSocket對象,然后調(diào)用Creat方法創(chuàng)建套接strRecvd
6、="對方說:"+strRecvd;字句柄。對于客戶端套接字,需要調(diào)用Connect方法連接服務(wù)m_conc.AddString(strRecvd);器;對于服務(wù)器端的套接字,需要調(diào)用Listen方法使其處于監(jiān)UpdateData(FALSE);}}聽模式。(6)處理“連接服務(wù)器”按鈕的單擊事件,開始連接服務(wù)表1本文中用到的CAsyncSocket類的消息事件器,代碼如下:事件注釋voidCclientDlg::OnBnClickedButton1()virtualvoidOnReceive(intnErrorCode);對應(yīng)FD_READ事件{Update
7、Data(TRUE);virtualvoidOnSend(intnErrorCode);對應(yīng)FD_WRITE事件DWORDs;//s為一位字符串,將其附初值virtualvoidOnAccept(intnErrorCode);對應(yīng)FD_ACCEPT事件virtualvoidOnConnect(intnErrorCode);對應(yīng)FD_CONNECT事件structin_addrad;//定義一個代表IP地址的virtualvoidOnClose(intnErrorCode);對應(yīng)FD_CLOSE事件in_addr結(jié)構(gòu)體2程序分析m_addc.GetAddre
8、ss(s);//將控件m_addc的值賦給s下邊將利用CAsync