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

正文內(nèi)容

vc高級程序設(shè)計大作業(yè)_基于局域網(wǎng)的聊天室設(shè)計與開發(fā)(編輯修改稿)

2024-12-16 08:10 本頁面
 

【文章內(nèi)容簡介】 FC 給出了 CSocket類,這個類繼承 于 CAsyncSocket 類,它提供了比 CAsyncSocket 更高層的 WinSock API 接口。相比起來, CSocket 類代表了一個比 CAsyncSocket 對象更高層次的 Windows Socket的抽象, CSocket 類與 CSocketFile 類和 CArchive 類一起工作來發(fā)送和接收數(shù)據(jù), 除此之外CSocket 類和 CSocketFile 類可以與 Carchive 類一起合作來管理發(fā)送和接收的數(shù)據(jù),這使管理數(shù)據(jù)收發(fā)更加便利 , 因此使 用 CSocket 類編寫網(wǎng)絡(luò)應(yīng)用程序更加方便 。 但是它犧牲掉了北京信息科技大學(xué) 6 CAsyncSocket 類 的靈活性。 同時 CSocket 對象提供阻塞模式, 所謂 阻塞 是指 直到操作完成后才返回控制權(quán) , 在完成操作返回之前 進程被掛起, 什么也不能做 。常見的阻塞函數(shù)有 Receive()、 Send()、ReceiveFrom()、 SendTo() 和 Accept()。假如 一個 socket 處于非阻塞模式(即異步操作),則會被調(diào)用函數(shù)立即返回 ,通信效率較高。對于 CAsyncSocket 類可以用 GetLastError 成員函數(shù)查詢最后的錯誤,如果錯誤 返回值為 WSAEWOULDBLOCK, 則說明有阻塞,而CSocket 絕不會返回 WSAEWOULDBLOCK, 因為它在自己類的內(nèi)部已經(jīng)實現(xiàn)了阻塞管理,減輕了程序員負擔(dān),但是卻犧牲了通信的高效性 。 是不是使用 CSocket 類就不能實現(xiàn)類 似 CAsyncSocket 類 的高效非阻塞操作呢?也不是,使用使用 多線程的方法既可以使程序員享受 CSocket 帶來的簡化編程的便利,也不會影響用戶界面對用戶的反應(yīng) ,可謂一舉兩得。 綜合上述各個因素以及兩個類的特點可以得知, 如果需要低層控制和高效率,就使用CAsyncSock 類;如果需要方便,則可使用 CSocket 類 ;如果既想編程方便又想高效率通信,則可以聯(lián)合使用 CSocket 類和多線程編程 [4]。 類編程模型 當(dāng)我們在 使用 CSocket 對象 編寫網(wǎng)絡(luò)通信應(yīng)用程序時候,需要 涉及 到 CArchive 類 和CSocketFile 類對象。以下介紹的針對字節(jié)流型套接字 CSocket 類編程模型的實現(xiàn)過程 中,服務(wù)器方和客戶方的實現(xiàn)過程幾乎沒有什么差異,唯一的區(qū)別僅在 第 2 步。 1. 使用 CSocket 類產(chǎn)生一個 對象 ,然后調(diào)用 CSocket 類對象的成員函數(shù) Create()產(chǎn)生一個 Socket 句柄。這個過程 對于數(shù)據(jù)報套接字, CAsyncSocket 和 CSocket 的使用方法沒有什么區(qū)別。 2. 在這里,我們要分服務(wù)器與客戶端區(qū)分對待。假如第一步創(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) 接受請求,并且 建立連接。 同樣地, Accept()成員函數(shù) 的參數(shù)為 一個新的并且為空的 CSocket 對象。 3. 接著我們就需要構(gòu)造一個 CSocketFile 對象, 并且將 它與 CSocket 對象 關(guān)聯(lián)起來 ,以便供后面的通信使用。 北京信息科技大學(xué) 7 4. 在完成前面一些列的準(zhǔn)備工作后,我們就要正式開始接收和發(fā)送數(shù)據(jù)了。為了完成這個工作,首先我們 為接收和發(fā)送數(shù)據(jù) 各構(gòu)建 一個 CArchive 對象, 與此同時將 它們與 上面構(gòu)造的 CSocketFile 對象 也 關(guān)聯(lián)起來。 在這里我們需要特別注意的是, CArchive 類 是不能和數(shù)據(jù)報套接字一起工作 ,實現(xiàn)數(shù)據(jù)接收和發(fā)送 的。 5. 在客戶與服務(wù)方 使用 CArchive 對象的 Read()、 Write()等函數(shù)傳送 、接收 數(shù)據(jù)。 6. 當(dāng)服務(wù)方和客服方結(jié)束雙方的通信后 , 完成一系列的清理工作,具體工作 是先后 銷毀 CArchive、 CSocketFile 和 CSocket 對象 []。 的聊天室 設(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)的信息。 系統(tǒng)功能模塊圖 系統(tǒng)包括客服端程序和服務(wù)器端程序,服務(wù)器端包括:( 1)設(shè)置 IP 地址和端口模塊;( 2)北京信息科技大學(xué) 8 監(jiān)聽模塊;( 3)聊天模塊;( 4)統(tǒng)計在線人數(shù)模塊;( 5)退出模塊??蛻舳税ǎ海?1)連接模塊;( 2)聊天模塊;( 3)退出模塊。具體功能模塊示意圖見圖 2 所示。 基 于 局 域 網(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ù)。 C/S 模式的具體原理如下: 服務(wù)器: 1. 服務(wù)器打開一個通信通道并且通知本地主機,它愿意在某一地址和端口上接收客戶方的請求; 2. 監(jiān)聽打開的端口,等待客戶方的請求到達該端口; 3. 服務(wù)器接收 到客戶請求,處理該請求,然后發(fā)送應(yīng)答信號,與此同時激活一個新的進程 (或線程 ),用來專門處理這個客戶請求。激活的新進程 (或線程 ) 僅需要處理北京信息科技大學(xué) 9 此客戶請求,并不需要對其它請求作出響應(yīng)或者應(yīng)答。當(dāng)服務(wù)關(guān)閉后,關(guān)閉此新進程與客戶的通信鏈路,并且終止; 4. 返回第二步,繼續(xù)監(jiān)聽端口,等待另一客戶的請求; 5. 關(guān)閉服務(wù)器。 客戶方: 1. 服務(wù)器方打開一個通信通道,并連接到服務(wù)器方打開的特定端口; 2. 向服務(wù)器發(fā)送服務(wù)請求報文,等待并接收服務(wù)器方的應(yīng)答;繼續(xù)向服務(wù)方提出請求; 3. 請求結(jié)束后,關(guān)閉自己打開通信通道,并且終止 。 下面將分別從服務(wù)器端與客戶端兩個方面詳細介紹使用 CSocket 類、基于 TCP/
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1