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

正文內(nèi)容

基于vc的局域網(wǎng)聊天室2(編輯修改稿)

2024-07-20 18:43 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 一個(gè)派生于CAsyncSocket的類,當(dāng)然也可以直接派生于CSocket。CAsyncSocket類中封裝了一些有關(guān)套接字之間消息傳遞的函數(shù)。當(dāng)有相關(guān)消息到來時(shí),應(yīng)用框架會(huì)自動(dòng)調(diào)用這些函數(shù),從而可以比較方便的實(shí)現(xiàn)套接字之間的信息傳輸。代碼如下:class csocket:public CSocket{public: void OnReceive(int i){ dlgonrev(mynum)。 }。 void OnAccept(int i){ dlgonac()。 }。 void OnClose(int i){ dlgoncl()。 }。 void setp(CTcpseverDlg * severdlg,int num){ mynum=num。 dlg=severdlg。 }。private: CTcpseverDlg *dlg。 int mynum。}。在上面的代碼中,只解釋一個(gè)封裝于CAsyncSocket中的函數(shù)。OnReceive()函數(shù)在MSDN中的聲明是這樣的:virtual void OnReceive( int nErrorCode )。該函數(shù)定義為虛函數(shù),這樣才可以在派生的新類csocket中重新定義,根據(jù)多態(tài)性原理可以當(dāng)應(yīng)用程序框架收到消息后會(huì)調(diào)用定義的這個(gè)OnReceive函數(shù)。在函數(shù)的實(shí)現(xiàn)中加入了自己的代碼:dlgonrev(mynum)。該代碼意為用對(duì)象dlg調(diào)用函數(shù)onrev(),onrev()在類CTcpseverDlg中做了聲明和定義,后續(xù)會(huì)去分析這個(gè)函數(shù)。在類csocket中直接用到了CTcpseverDlg類的對(duì)象。這樣在派生csocket類之前一定要對(duì)CTcpseverDlg類做一個(gè)申明。或者把類csocket類的聲明放在類CTcpseverDlg之后。當(dāng)服務(wù)器收到網(wǎng)絡(luò)發(fā)送的消息后,框架自動(dòng)調(diào)用函數(shù)OnReceive(),這樣就執(zhí)行了代碼dlgonrev(mynum)?,F(xiàn)在來分析onrev()在類CTcpseverDlg中的定義。void CTcpseverDlg::onrev(int mynum){ CString str,str1。int i。 char ss[100]。 for(int j=0。j100。j++) ss[j]=39。\039。 csrev[mynum].Receive(ss,100)。 (%s,ss)。 for(i=1。i=csnum。i++) if(csrev[i]) csrev[i].Send(str,100)。 GetDlgItemText(IDC_EDIT1,str1)。 str=str1+\r\n+str。 SetDlgItemText(IDC_EDIT1,str)。 CEdit *ce=((CEdit*)GetDlgItem(IDC_EDIT1))。 ceLineScroll(ceGetLineCount()1)。}從定義中可以看出,函數(shù)實(shí)現(xiàn)的功能是把收到的信息(某客戶端發(fā)送的)發(fā)送到連接到這個(gè)聊天室的所有用戶。并且在發(fā)送完成后把信息打印到自己的屏幕上。并設(shè)置正確的滾動(dòng)條信息。這樣就完成了接收并轉(zhuǎn)發(fā)消息的功能。下面的OnAccept和OnClose函數(shù)都是框架自動(dòng)調(diào)用的,分別在建立連接和斷開連接后觸發(fā)調(diào)用。在這些消息調(diào)用中只要正確的加入自己的信息就可以處理好各種事件。函數(shù)setp()起到了一個(gè)指針保護(hù)作用。在類CTcpseverApp的初始化函數(shù)中對(duì)套接字做了一個(gè)初始化工作,使工程正確的得到WinSock的信息。部分代碼如下:if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED)。 return FALSE。 }AfxSocketInit()函數(shù)如果初始化成功則返回非零,否者返回零。這樣可知如果初始化失敗則會(huì)調(diào)用函數(shù)AfxMessageBox彈出錯(cuò)誤信息。在類CTcpseverDlg的初始化函數(shù)中也做了一些事情,看代碼:BOOL CTcpseverDlg::OnInitDialog(){ CWnd* wnd。 CString str。 wnd=GetDlgItem(IDC_MARKST)。 wndGetWindowText(str)。 wnd=GetDlgItem(IDC_MARK)。 wndSetWindowText(str)。 wndShowWindow(SW_HIDE)。 SetDlgItemText(IDC_EDIT3,亡羊哺狼)。 SetDlgItemText(IDC_EDIT4,1025)。 CBitmap bitmap。 (IDB_BITMAP1)。 (0,SS_BITMAP)。 ((HBITMAP)())。 return TRUE。 // return TRUE unless you set the focus to a control}代碼中又涉及到了虛函數(shù)多態(tài)性,實(shí)現(xiàn)了動(dòng)態(tài)聯(lián)編。先定義了個(gè)CWnd的指針。CWnd封裝了函數(shù)GetDlgItem(),這樣對(duì)于其派生的比如編輯框類,靜態(tài)文本類,按鈕類等都繼承了此函數(shù)。這樣只需在最前面定義一個(gè)CWnd的指針就可以動(dòng)態(tài)的獲取相應(yīng)消息。這些代碼首先對(duì)窗口進(jìn)行了一些文本設(shè)置和某些窗口的隱藏。還設(shè)置了服務(wù)器的昵稱為亡羊哺狼。 功能實(shí)現(xiàn)圖7服務(wù)器啟動(dòng)界面圖運(yùn)行VC,打開服務(wù)端時(shí)啟動(dòng)界面如上。首先服務(wù)器有一個(gè)默認(rèn)設(shè)置,服務(wù)器名稱默認(rèn)值為“亡羊哺狼”,在32位機(jī)器上端口號(hào)有65536個(gè)。但是01023被系統(tǒng)占用了,只能設(shè)置從102465535中的號(hào)碼。當(dāng)點(diǎn)擊開始監(jiān)聽后,服務(wù)器設(shè)置中的按鈕都會(huì)變成灰色,不可點(diǎn)擊了,這樣在整個(gè)監(jiān)聽過程中維護(hù)了信息的安全性。聊天區(qū)右上角有個(gè)“清空”按鈕,初始狀態(tài)是灰色的,不可點(diǎn)擊。當(dāng)聊天區(qū)有信息記錄后會(huì)變成可點(diǎn)擊按鈕。當(dāng)點(diǎn)擊清空后會(huì)清空聊天區(qū)的信息記錄。監(jiān)聽成功,用戶登入,聊天內(nèi)容,用戶退出等信息都會(huì)記錄在聊天區(qū)中,方便閱讀。在監(jiān)聽端口過程中可能發(fā)生端口被占用的錯(cuò)誤信息,這樣就得重新設(shè)置端口了。當(dāng)然從102565535之間的端口不可能被全部占用。下面貼出部分實(shí)現(xiàn)代碼:void CTcpse
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1