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

正文內(nèi)容

基于vc的局域網(wǎng)聊天室2-在線瀏覽

2024-08-03 18:43本頁面
  

【正文】 特定端口。3) 請求結(jié)束后關(guān)閉通信通道并終止。2) 服務進程一般是先于客戶請求而啟動的。 系統(tǒng)實現(xiàn)原理聊天系統(tǒng)的設計跟普通網(wǎng)站設計有著許多不同的地方,普通網(wǎng)站設計所考慮的因素,例如,普通網(wǎng)站需要對布局進入大量美化以及動畫設計等等,而聊天室只要提供滿足訪客雙方直接實時聊天即可。因此,程序要在TCP/IP環(huán)境下,實現(xiàn)服務器端和客戶端兩部分程序。利用這兩類函數(shù)就可以開始寫網(wǎng)絡通信程序??蛻舳朔掌鹘⒎斩吮O(jiān)聽等待并接受連接創(chuàng)建連接套接字發(fā)送消息Send接受消息Receive關(guān)閉套接字Close向服務端發(fā)送連接請求 Connect發(fā)送消息Send接受消息Receive關(guān)閉套接字Close圖3 系統(tǒng)實現(xiàn)原理圖在套接字創(chuàng)建以及通信的過程中,將用到很多函數(shù)處理相關(guān)事件,具體函數(shù)見下:(1) AfxSocketInit(): 此函數(shù)在初始化應用程序函數(shù)中調(diào)用,用于確定Winsock版本并做一些套接字的初始化工作。(3) Listen(): 監(jiān)聽套接字專用,用于向監(jiān)聽套接字發(fā)送對端口監(jiān)聽的命令。(5) Accept(): 監(jiān)聽套接字專用,用于接受客戶端通過網(wǎng)絡發(fā)送的連接請求,建立連接。(7) Receive(): 用于套接字接受數(shù)據(jù)。在整個通信過程中,當某一事件觸發(fā)時,應用框架將收到某些消息,從而自動調(diào)用響應函數(shù)。具體函數(shù)見下:(1) OnAccept(): 監(jiān)聽套接字在端口聽到連接請求時應用程序框架自動調(diào)用,以告知可以接受請求或拒絕連接。(2) OnConnect(): 當客戶端套接字連接請求完成后 ,應用程序框架調(diào)用該函數(shù) ,告之是否成功。(4) OnReceive(): 框架調(diào)用此函數(shù)來告訴套接字現(xiàn)在可以調(diào)用Receive函數(shù)從數(shù)據(jù)緩沖區(qū)取出數(shù)據(jù)。 系統(tǒng)工作流程結(jié)束啟動服務器判斷啟動啟動客戶端判斷連接登入聊天室退出聊天室退出服務器開始否否是是圖4 系統(tǒng)總工作流程圖首先啟動聊天室的服務端,設置端口,打開監(jiān)聽。進入聊天室后用戶之間可以進行簡單的文字聊天。這樣登入服務器的用戶們之間就可以進行簡單的文字聊天了。當用戶斷開連接后,服務器也會通知該用戶下線。基于TCP傳送控制協(xié)議。 界面設計圖5 界面資源圖在設計的過程中,當掌握了核心思想內(nèi)容,成功完成功能實現(xiàn)后,界面設計永遠是重要的部分。上圖為該局域網(wǎng)聊天室的服務器界面資源圖。上半部為服務器名稱設置,監(jiān)聽端口的設置。5 局域網(wǎng)聊天室的實現(xiàn) 準備工作注意勾選這項了!圖6 設置MFC向?qū)D該聊天室是基于MFC的CSocket編程,首先建立正確的MFC AppWizard(exe)程序后,進行MFC程序向?qū)У脑O置中要記得勾選Windows Socket這項。如果沒有勾選也沒關(guān)系,只要在編程過程中正確加入相應內(nèi)容即可!正確的向?qū)гO置會給你省去很多工作[13]!在開始程序之前先得創(chuàng)建一個派生于CAsyncSocket的類,當然也可以直接派生于CSocket。當有相關(guān)消息到來時,應用框架會自動調(diào)用這些函數(shù),從而可以比較方便的實現(xiàn)套接字之間的信息傳輸。 }。 }。 }。 dlg=severdlg。private: CTcpseverDlg *dlg。}。OnReceive()函數(shù)在MSDN中的聲明是這樣的:virtual void OnReceive( int nErrorCode )。在函數(shù)的實現(xiàn)中加入了自己的代碼:dlgonrev(mynum)。在類csocket中直接用到了CTcpseverDlg類的對象。或者把類csocket類的聲明放在類CTcpseverDlg之后?,F(xiàn)在來分析onrev()在類CTcpseverDlg中的定義。int i。 for(int j=0。j++) ss[j]=39。 csrev[mynum].Receive(ss,100)。 for(i=1。i++) if(csrev[i]) csrev[i].Send(str,100)。 str=str1+\r\n+str。 CEdit *ce=((CEdit*)GetDlgItem(IDC_EDIT1))。}從定義中可以看出,函數(shù)實現(xiàn)的功能是把收到的信息(某客戶端發(fā)送的)發(fā)送到連接到這個聊天室的所有用戶。并設置正確的滾動條信息。下面的OnAccept和OnClose函數(shù)都是框架自動調(diào)用的,分別在建立連接和斷開連接后觸發(fā)調(diào)用。函數(shù)setp()起到了一個指針保護作用。部分代碼如下:if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED)。 }AfxSocketInit()函數(shù)如果初始化成功則返回非零,否者返回零。在類CTcpseverDlg的初始化函數(shù)中也做了一些事情,看代碼:BOOL CTcpseverDlg::OnInitDialog(){ CWnd* wnd。 wnd=GetDlgItem(IDC_MARKST)。 wnd=GetDlgItem(IDC_MARK)。 wndShowWindow(SW_HIDE)。 SetDlgItemText(IDC_EDIT4,1025)。 (IDB_BITMAP1)。 ((HBITMAP)())。 // return TRUE unless you set the focus to a control}代碼中又涉及到了虛函數(shù)多態(tài)性,實現(xiàn)了動態(tài)聯(lián)編。CWnd封裝了函數(shù)GetDlgItem(),這樣對于其派生的比如編輯框類,靜態(tài)文本類,按鈕類等都繼承了此函數(shù)。這些代碼首先對窗口進行了一些文本設置和某些窗口的隱藏。 功能實現(xiàn)圖7服務器啟動界面圖運行VC,打開服務端時啟動界面如上。但是01023被系統(tǒng)占用了,只能設置從102465535中的號碼。聊天區(qū)右上角有個“清空”按鈕,初始狀態(tài)是灰色的,不可點擊。當點擊清空后會清空聊天區(qū)的信息記錄。在監(jiān)聽端口過程中可能發(fā)生端口被占用的錯誤信息,這樣就得重新設置端口了。下面貼出部分實現(xiàn)代碼:void CTcpseverDlg::Onsend() { CString str,history。 GetDlgI
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1