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

正文內(nèi)容

vc++高級程序設(shè)計大作業(yè)_基于局域網(wǎng)的聊天室設(shè)計與開發(fā)-預(yù)覽頁

2024-12-12 08:10 上一頁面

下一頁面
 

【正文】 告更正后,應(yīng)用“ Rebuild All”重新進行編輯和連接。 VC6 從編輯狀態(tài)進入調(diào)試狀態(tài)后,用戶界面會有所變化。下面將常用的“ Debug”菜單項分別說明如下: a.“ Go”菜單項:按流程順序批量運行程序語句,遇到斷點( Breakpoint)時調(diào)試暫停; b.“ Restart”菜單項:重新開始調(diào)試; c.“ Stop Debugging”菜單項:停止調(diào)試, VC6 返回編輯狀態(tài); d.“ Step into”菜單項:逐 句執(zhí)行源程序,并且如果遇到子程序會進入子程序內(nèi)執(zhí)行; e.“ Step over”菜單項:逐句執(zhí)行源程序,但不會進入子程序中; f.“ Step out”菜單項:從當(dāng)前的子程序中跳出,返回調(diào)用它的上一級程序; g.“ Run to Cursor”菜單項:執(zhí)行到文件子窗口中,當(dāng)前被編輯源文件的光標(biāo)所在行處。 ③ 右擊設(shè)置過斷點的行,在快捷菜單中選擇“ Disable/Enable Breakpoint”(禁用 /啟用斷點)菜單項,可以禁用或啟用(都不會刪除)斷點?!?Watch”子窗口則可用來監(jiān)視程序員指定的變量或者表達(dá)式的值,方法是將想要監(jiān)視的變量或者表達(dá)式寫在“ Name”列下的各行中,回車后,就可看到它們的實時值。主要有兩個類: CAsyncSocket 類 和 CSocket 類。 但是它犧牲掉了北京信息科技大學(xué) 6 CAsyncSocket 類 的靈活性。對于 CAsyncSocket 類可以用 GetLastError 成員函數(shù)查詢最后的錯誤,如果錯誤 返回值為 WSAEWOULDBLOCK, 則說明有阻塞,而CSocket 絕不會返回 WSAEWOULDBLOCK, 因為它在自己類的內(nèi)部已經(jīng)實現(xiàn)了阻塞管理,減輕了程序員負(fù)擔(dān),但是卻犧牲了通信的高效性 。以下介紹的針對字節(jié)流型套接字 CSocket 類編程模型的實現(xiàn)過程 中,服務(wù)器方和客戶方的實現(xiàn)過程幾乎沒有什么差異,唯一的區(qū)別僅在 第 2 步。假如第一步創(chuàng)建的是 客戶方套接字,調(diào)用 CSocket 類的基類成員函數(shù) CAsyncSocket ∷ Connect() 來與 服務(wù)方套接字連接; 反之, 如果 在前面我們創(chuàng)建的是 服務(wù)方套接字, 那么就要開始監(jiān)聽,相應(yīng)的 調(diào)用 基類的成員函數(shù) CAsyncSocket∷ Listen()開始監(jiān)聽來自客戶方的連接請求, 當(dāng)服務(wù)器方正確收到客戶方的 連接請求后, 服務(wù)器方 調(diào)用 CAsyncSocket∷ Accept( )成員函數(shù)來響應(yīng) 接受請求,并且 建立連接。為了完成這個工作,首先我們 為接收和發(fā)送數(shù)據(jù) 各構(gòu)建 一個 CArchive 對象, 與此同時將 它們與 上面構(gòu)造的 CSocketFile 對象 也 關(guān)聯(lián)起來。 的聊天室 設(shè)計 系統(tǒng)總體目標(biāo) 服務(wù)器端: 1. 服務(wù)器端可以設(shè)置開放的端口,并且可以自動檢查端口是否設(shè)置的正確; 2. 服務(wù)器端可以自動獲取本機的 IP 地址和主機名稱; 3. 服務(wù)器器可以自動監(jiān)聽開放的端口,看是否有客戶端連接; 4. 聊天區(qū)的信息可以自動換行,可以使用回車鍵發(fā)送信息; 5. 服務(wù)器端可以自動獲取連接客戶端的基本信息; 6. 服務(wù)器端可以統(tǒng)計在線的客服端,以及相應(yīng)的信息; 客戶端: IP 地址和端 口,同時客戶端可以設(shè)置自己的昵稱; ,可以自動檢查端口和 IP 地址是否正確,如果不正確,能給出提示信息; ,能提示用戶相應(yīng)的信息。 基 于 局 域 網(wǎng) 的 聊 天 室服務(wù)器客服端連接服務(wù)器聊天模塊退出模塊設(shè)置I P地址和端口監(jiān)聽端口聊天模塊統(tǒng)計在線人數(shù)模塊退出模塊 圖 2 系統(tǒng)功能模塊圖 的聊天室 實現(xiàn) 服務(wù)器開啟與客戶連接以及局域網(wǎng)通信 在 TCP/IP 網(wǎng)絡(luò)應(yīng)用中,通信的兩個進程間相互作用的主要模式是客戶機 /服務(wù)器模式(client/server),客戶機 /服務(wù)器模式在操作過程中采取的是主動請求的方式,即客戶向服務(wù)器提出請求,服務(wù)器接收到請求后,提供相應(yīng)的服務(wù)。 客戶方: 1. 服務(wù)器方打開一個通信通道,并連接到服務(wù)器方打開的特定端口; 2. 向服務(wù)器發(fā)送服務(wù)請求報文,等待并接收服務(wù)器方的應(yīng)答;繼續(xù)向服務(wù)方提出請求; 3. 請求結(jié)束后,關(guān)閉自己打開通信通道,并且終止 。 北京信息科技大學(xué) 10 ( 4)關(guān)閉套接字,結(jié)束通信 [11][12]。 char *ip。 } else AfxMessageBox(不能得到本機名 稱 )。 SetDlgItemText(IDC_EDIT4,1030)。 監(jiān)聽模塊 監(jiān)聽模塊主要負(fù)責(zé)監(jiān)聽端口,看是否有客戶端連接,其示意圖見圖 所示,具體實現(xiàn)細(xì)節(jié)如下: IP 地址,以及端口 式化 IP 地址以及端口字符串,判斷端口號是否符合要求 ( 1)如果符合要求 北京信息科技大學(xué) 12 創(chuàng)建一個字節(jié)流套接字,并且調(diào)用 Create()函數(shù)產(chǎn)生 Socket 句柄 。 GetDlgItemText(IDC_EDIT3,ipstr)。 ()。port9999){ if((port)){ // (port)。 CWnd *cw=GetDlgItem(IDC_EDIT3)。 cw=GetDlgItem(IDC_listen)。 } else{ MessageBox(綁 定 監(jiān) 聽端口失 敗 ,請 確 認(rèn)該 端口 沒 有被其 它 程序占用 )。聊天區(qū)示意圖見圖 所示。 CString str1。 ()。 GetDlgItemText(IDC_EDIT_5,str1)。 (ce_2)LineScroll(ce_2GetLineCount()1)。 for(int i=1。 if(confirm==IDYES){ str=severname+退出 ,與服務(wù)器連接已斷開 。i++) if(csrev[i]) csrev[i].Send(str,len)。 for(int i=1。 ( 1) 如果正確設(shè)置 使用 Create()創(chuàng)建客戶端 Socket 套接字; 使用 Bind()綁定端口; 使用 Connect()連接服務(wù)器; 連接服務(wù)器,并判斷是否連接成功; ( a)如果連接成功,使用 Send()向服務(wù)器發(fā)送連接客服的基本信息,兩者可以開始通信聊天。 CString ipstr,portstr。 return。} GetDlgItemText(IDC_EDIT5,clientname)。 ()。port9999){ 北京信息科技大學(xué) 17 ()。 cw=GetDlgItem(IDC_EDIT2)。 cw=GetDlgItem(IDC_EDIT5)。 int len=()。,39。 (Cname4send,())。} } 聊天模塊 與服務(wù)端聊天模塊實現(xiàn)原理相同,在此不再重復(fù)說明。在聊天室中客戶端不僅可以和服務(wù)器端進行一對一的交談,而且服務(wù)器動態(tài)監(jiān)聽端口,隨時接受其他客戶端的連接,可以和多人
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1