下列 MFC 示例程序闡釋了 Windows Sockets 功能:
CHATTER 是一個 Windows 套接字客戶端示例應用程序。它是一個具有拆分窗口的單文檔界面 (SDI) 應用程序,允許用戶將消息發送到討論服務器 (CHATSRVR),討論服務器然後將消息同時發送給其他多個 CHATTER 用戶。
通過使 CHATTER 應用程序向服務器發送廣播數據文報包而不是消息流,可以在不使用客戶端/服務器模型的情況下編寫 CHATTER 和 CHATSRVR。然而,與流式套接字不同,數據文報套接字不能保證一定會被傳送;因此,一些消息可能不會到達討論中的所有其他用戶。生成並運行示例
生成並運行 CHATTER 示例
運行 CHATTER 時,有一個“Setup”對話框請求輸入以下內容:
提供了所有這些信息並單擊“OK”後,主應用程序窗口隨即出現。若要發送消息,請在下部窗格中鍵入消息。按 ENTER 鍵發送消息。若要發送多行消息,請按 CTRL+ENTER 鍵。關鍵字
此示例說明了以下關鍵字:
AfxGetApp、AfxMessageBox、CArchive::Flush、CArchive::IsStoring、CControlBar::EnableDocking、CControlBar::GetBarStyle、CControlBar::SetBarStyle、CDialog::DoModal、CDocument::DeleteContents、CDocument::GetFirstViewPosition、CDocument::GetNextView、CDocument::OnNewDocument、CEditView::GetEditCtrl、CEditView::SerializeRaw、CFrameWnd::DockControlBar、CFrameWnd::EnableDocking、CFrameWnd::OnCreateClient、CFrameWnd::SetActiveView、CObject::AssertValid、CObject::Dump、CObject::IsKindOf、CObject::Serialize、CRect::Size、CSplitterWnd::CreateView、CSplitterWnd::GetPane、CStatusBar::Create、CStatusBar::SetIndicators、CString::GetBuffer、CString::GetLength、CString::IsEmpty、CString::LoadString、CString::ReleaseBuffer、CToolBar::Create、CToolBar::LoadBitmap、CToolBar::SetButtons、CView::GetDocument、CView::OnDraw、CWinApp::AddDocTemplate、CWinApp::InitInstance、CWinApp::LoadStdProfileSettings、CWinApp::OnFileNew、CWnd::DestroyWindow、CWnd::DoDataExchange、CWnd::GetClientRect、CWnd::GetWindowText、CWnd::GetWindowTextLength、CWnd::KillTimer、CWnd::OnChar、CWnd::OnCreate、CWnd::OnTimer、CWnd::PreCreateWindow、CWnd::SetTimer、CWnd::SetWindowText、SetWindowText、rand、wsprintf
注意一些示例(如此示例)尚未經過修改以反映 Visual C++ 向導、庫和編譯器的變化,但仍說明了如何完成所需的任務。
MFC 示例
CHATSRVR 是 Windows 套接字服務器示例應用程序,它是一個單文檔界面 (SDI) 應用程序,用於為 CHATTER 示例的客戶端實現討論服務器。
通過使 CHATTER 應用程序向服務器發送廣播數據文報包而不是消息流,可以在不使用客戶端/服務器模型的情況下編寫 CHATTER和 CHATSRVR。然而,與流式套接字不同,數據文報套接字不能保證一定會被傳送;因此,一些消息可能不會到達討論中的所有其他用戶。生成並運行示例
生成並運行 CHATSRVR 示例
運行 CHATSRVR 時會顯示一個請求輸入“Channel”的“Discussion”對話框。“Channel”是標識要支持的討論的數字(一台計算機可以運行多個討論服務器)。提供了此信息並單擊“OK”後,主應用程序窗口隨即出現。關鍵字
此示例說明了以下關鍵字:
AfxMessageBox、CArchive::Flush、CArchive::IsStoring、CCmdUI::Enable、CCmdUI::SetText、CControlBar::EnableDocking、CControlBar::GetBarStyle、CControlBar::SetBarStyle、CDialog::DoModal、CDocument::DeleteContents、CDocument::OnNewDocument、CEditView::GetEditCtrl、CFrameWnd::DockControlBar、CFrameWnd::EnableDocking、CObject::AssertValid、CObject::Dump、CObject::Serialize、CStatusBar::Create、CStatusBar::SetIndicators、CString::GetBuffer、CString::LoadString、CString::ReleaseBuffer、CToolBar::Create、CToolBar::LoadBitmap、CToolBar::SetButtons、CView::GetDocument、CView::OnDraw、CWinApp::AddDocTemplate、CWinApp::ExitInstance、CWinApp::InitInstance、CWinApp::LoadStdProfileSettings、CWinApp::OnFileNew、CWnd::DoDataExchange、CWnd::GetWindowTextLength、CWnd::OnCreate、SetWindowText、wsprintf
注意 一些示例(如此示例)尚未經過修改以反映 Visual C++ 向導、庫和編譯器的變化,但仍說明了如何完成所需的任務。
MFC 示例