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

正文內(nèi)容

基于mfc的簡易聊天室(編輯修改稿)

2025-12-18 15:14 本頁面
 

【文章內(nèi)容簡介】 OnInitDialog。在所有對話框控件建立且在對話框顯示之前,調(diào)用OnInitDialog。 在模態(tài)對話框與非模態(tài)對話框執(zhí)行的任意時刻都可以調(diào) CWnd::UpdateData。 如果要手工創(chuàng)建對話框,應(yīng)為對話框派生類添加必需的成員變量,并添加已獲得數(shù)據(jù)值的成員函數(shù)。 關(guān)于 ClassWizard 的更多信息,請參閱聯(lián)機文檔 “Visual C++程序員指南 ”中的 “使 第 5 頁 用 ClassWizard”。 當用戶按下 OK 或 Cancel 按鈕,或者調(diào)用 EndDialog 時,模態(tài)對話框自動關(guān)閉。 CAsyncsocket 類和 CSocket 類 Cssyncsocket 類一個異步非阻塞 Socket 類封裝類 , CasyncSocket::Create()有一個參數(shù)指明了你想要處理那些 Socket 事件 , 你關(guān)心的事件被指定以后 , 這個 Socket 默認就被用做了異步方式 .的函數(shù) ,除了一個以外 , 在創(chuàng)建了一個 CSocketWnd 窗口對象 ,使 WSAAsyncSlecet()將這個 SOCKET 與該窗口對象關(guān)聯(lián) ,以讓該窗口對象處理來自 Socket 的事件 (消息 ), 然而CSocketWnd 收到 Socket 事件之, 只是簡單地回 CasyncSocket::OnReceive()等虛函數(shù) 。 所以CAsyncSocket 的派生類 , 只需要在這些虛函數(shù)里添加發(fā)送和接收的代 碼 。 CSocket 是 MFC CAsyncSocket 基礎(chǔ)上派生的一個同步阻塞 Socket 的封裝類。 構(gòu)造一個 CAsyncSocket 對象并使用該對象創(chuàng)建基礎(chǔ) SOCKET 句柄 [2]。 套接字的創(chuàng)建遵循兩階段構(gòu)造的 MFC 模式。 例如 : CAsyncSocket sock。( )。 // Use the default parameters CAsyncSocket* pSocket = new CAsyncSocket。 int nPort = 27。 pSocket Create( nPort, SOCK_DGRAM )。 上面的第一個構(gòu)造函數(shù)在堆棧上創(chuàng)建一 個 CAsyncSocket 對象,第二個構(gòu)造函數(shù)在堆上創(chuàng)建 CAsyncSocket 。上面的第一個 Create 調(diào)用使 用默認參數(shù)創(chuàng)建流式套接字,第二個 Create 調(diào)用創(chuàng)建具有指定端口和地址的數(shù)據(jù)文報套接字。任一個 Create 版本都可以和任一種構(gòu)造方法一起使用。 Create 的參數(shù)有: ○ 1 “ 端口 ” :短整型。 對于服務(wù)器套接字,必須指定端口。對于客戶端套接字,通常接受此參數(shù)的默認值,該值允許 Windows Sockets 選擇端口。 ○ 2 套接字類型: SOCK_STREAM(默認值)或 SOCK_DGRAM。 套接字“地址”,如“ ”或“ ”。該地址為網(wǎng)絡(luò)上的網(wǎng)際協(xié)議 (IP) 地址。很可能要始終依賴此參數(shù)的默認值。 如果套接字是客戶端,則使用 CAsyncSocket::Connect 將此套接字對象連接到服務(wù)器套接字。 如果套接字是服務(wù)器,則將套接字設(shè)置為開始偵聽 ( 使用 CAsyncSocket::Listen) 來自客戶端的連接嘗試。接收到連接請求時,用 CAsyncSocket::Accept 接受該請求。 接受連接后,可以執(zhí)行驗證密碼等任務(wù)。 注意 Accept 成員函數(shù)采用對新的 空 CSocket 對象的引用作為它的參數(shù)。在調(diào)用 Accept 之前,必須構(gòu)造該對象。如果此套接字對象超出范圍,則連接關(guān)閉。不要對這個新套接字對象調(diào)用 Create 。 有關(guān)示例,請參見文章 Windows Sockets: 操作順序。通過調(diào)用 CAsyncSocket 對象的封裝 Windows Sockets API 函數(shù)的成員函數(shù),與其他套接字進行通信。 如果在堆棧上創(chuàng)建了套接字對象,當包含函數(shù)超出范圍時將調(diào)用此對象的析構(gòu)函數(shù)。如果使用 new 運算符在堆上創(chuàng)建了套接字對象,則您必須負責使用 delete 運算符銷毀此對象。 析構(gòu)函數(shù)在銷毀對象之前調(diào)用對象的 Close 成員函數(shù)。 有關(guān)代碼中該順序的示例(實際上是對于 CSocket 對象) ,請參見 Windows Sockets:操作順序 [1], 您對 CAsyncSocket 的責任。 創(chuàng)建 CAsyncSocket 類的對象后,該對象封裝 Windows SOCKET 句柄并提供對此句柄的操作。使用 CAsyncSocket 時,如果您直接使用 API,則必須處理可能面對的所有問題。 第 6 頁 例如:“阻塞”方案;發(fā)送和接收計算機之間的字節(jié)順序差異;在 Unicode 和多字節(jié)字符 集(MBCS)字符串之間轉(zhuǎn)換。 利用 CSocket 進行有連接的通信 微軟的 MFC 把復(fù)雜的 WinSock API 函數(shù)封裝到類里,這使得編寫網(wǎng)絡(luò)應(yīng)用程序更容易。CAsyncSocket 類逐個封裝了 WinSock API,為高級網(wǎng)絡(luò)程序員 提供了更加有力而靈活的方法。這個類基于程序員了解網(wǎng)絡(luò)通訊的假設(shè),目的是為了在 MFC 中使用 WinSock,程序員有責任處理諸如阻塞、字節(jié)順序和在 Unicode 與 MBCS 間轉(zhuǎn)換字符的任務(wù)。為了給程序員提供更方便的接口以自動處理這些任務(wù), MFC 給出 了 CSocket 類,這個 類是由CAsyncSocket 類繼承下來的,它提供了比 CAsyncSocket 更高層的 WinSock API 接口。Csocket 類和 CsocketFile 類可以與 Carchive 類一起合作來管理發(fā)送和接收的數(shù)據(jù),這使管理數(shù)據(jù)收發(fā)更加便利。 CSocket 對象提供阻塞模式,這對于 Carchive 的同步操作是至關(guān)重要的。阻塞函數(shù)(如 Receive()、 Send()、 ReceiveFrom()、 SendTo() 和 Accept()) 直到操作完成后才返回控制權(quán),因此如果需要低層控制和高效率,就使用 CasyncSock 類;如果需要方便,則可使用 Csocket 類。 使用 CSocket 對象涉及 CArchive 和 CSocketFile 類對象。以下介紹的針對字節(jié)流型套接字的操作步驟中,只有第 3 步對于客戶方和服務(wù)方操作是不同的,其他步驟都相同。 ( 1) 造一個 CSocket 對象。 ( 2) 使用這個對象的 Create() 成員函數(shù)產(chǎn)生一個 socket 對象。在客戶方程序中,除非需要數(shù)據(jù)報套接字, Create() 函數(shù)一般情況下應(yīng)該使用默認參數(shù)。而對于服務(wù)方程序,必須在調(diào)用 Create 時指定一個端口。需要注意的是, Carchive 類對象不能與數(shù)據(jù)報 ( UDP)套接字一起工作,因此對于數(shù)據(jù)報套 接字, CAsyncSocket 和 CSocket 的使用方法是一樣的。 ( 3) 如果是客戶方套接字,則調(diào)用 CAsyncSocket ∷ Connect() 函數(shù)與服務(wù)方套接字連接;如果是服務(wù)方套接字,則調(diào)用 CAsyncSocket∷ Listen() 開始監(jiān)聽來自客戶方的連接請求,收到連接請求后,調(diào)用 CAsyncSocket∷ Accept() 函數(shù)接受請求,建立連接。請注意 Accept() 成員函數(shù)需要一個新的并且為空的 CSocket 對象作為它的參數(shù),解釋同上。 ( 4) 產(chǎn)生一個 CSocketFile 對象,并把它與 CSocket 對象關(guān)聯(lián)起來。 ( 5) 為接收和發(fā)送數(shù)據(jù)各產(chǎn)生一個 CArchive 對象,把它們與 CSocketFile 對象關(guān)聯(lián)起來。切記 CArchive 是不能和數(shù)據(jù)報套接字一起工作的。 ( 6) 使用 CArchive 對象的 Read( )和 Write() 等函數(shù)在客戶與服務(wù)方傳送數(shù)據(jù)。 ( 7) 通訊完畢后,銷毀 CArchive、 CSocketFile 和 CSocket 對象。 3 詳細設(shè)計 我們利用 WinSocket 實現(xiàn)一個 網(wǎng)絡(luò)聊天室。需要一個聊天服務(wù)器,它可以和很多客戶端進行通信,從而把來自不同的客戶的聊天信息轉(zhuǎn)交到所有其他的客戶端。這樣就形成了一個采用 Client/Server 結(jié)構(gòu)的并可以多人同時在線的聊天室。 客戶端的實現(xiàn) ( 1)首先啟動 Visual C++ ,利用 MFC AppWizard[EXE]建立一個新的 MFC 工程 ,工程名為 tcpclient,在 MFC AppWizard Step1 的時候選擇 Dialog based 即基于對話框,在 Step4時勾選 Windows Sockets 選項 (如圖 3) ,其他 默認值下一步。 第 7 頁 圖 3 MFC的設(shè)置 ( 2) 客戶端主要分為三個窗口,第一個是連接窗口,需要輸入連接到服務(wù)器的相關(guān)設(shè)置信息;第二個是聊天信息顯示窗口,該窗口顯示登錄服務(wù)器以來發(fā)送和接收到的消息;第三個是消息編輯發(fā)送窗口,需要輸入你要發(fā)送的信息內(nèi)容并發(fā)送。 新建一個對話框,并添加各種控件(見控件表 1)如圖 4: 圖 4 聊天窗口布局 第 8 頁 表 1 控件類型及各自 ID 標題 控件類型 控件 ID 連接 Static IDC_STATIC 信息區(qū) Static IDC_STATIC 我的 ID: Static IDC_STATIC 服務(wù)器 ID: Static IDC_STATIC 端口號(默認 520) Static IDC_STATIC 連接服務(wù)器 Button IDC_con 發(fā)送(回車) Button IDC_send 編輯框 1 Edit IDC_EDIT1 編輯框 2 Edit IDC_EDIT2 編輯框
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1