下列 MFC 示例程序阐释了 Windows Sockets 功能:
CHATTER
CHATTER 是一个 Windows 套接字客户端示例应用程序。它是一个具有拆分窗口的单文档界面 (SDI) 应用程序,答应用户将消息发送到讨论服务器 (CHATSRVR),讨论服务器然后将消息同时发送给其他多个 CHATTER 用户。
通过使 CHATTER 应用程序向服务器发送广播数据文报包而不是消息流,可以在不使用客户端/服务器模型的情况下编写 CHATTER 和 CHATSRVR。然而,与流式套接字不同,数据文报套接字不能保证一定会被传送;因此,一些消息可能不会到达讨论中的所有其他用户。生成并运行示例
生成并运行 CHATTER 示例
打开解决方案 chatter.sln。
在“生成”菜单上单击“生成”。
在“调试”菜单上单击“开始执行(不调试)”。
运行 CHATTER 时,有一个“Setup”对话框请求输入以下内容:
Handle
用来寻址所有消息的名称。例如,可以选择“”。发送的所有消息的前面都会自动加上名称“”。
Server
运行 CHATSVR 示例的计算机的 IP 地址。
Channel
标识要加入的讨论的数字(一台计算机可以运行多个讨论服务器)。
提供了所有这些信息并单击“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
CHATSRVR 是 Windows 套接字服务器示例应用程序,它是一个单文档界面 (SDI) 应用程序,用于为 CHATTER 示例的客户端实现讨论服务器。
通过使 CHATTER 应用程序向服务器发送广播数据文报包而不是消息流,可以在不使用客户端/服务器模型的情况下编写 CHATTER和 CHATSRVR。然而,与流式套接字不同,数据文报套接字不能保证一定会被传送;因此,一些消息可能不会到达讨论中的所有其他用户。生成并运行示例
生成并运行 CHATSRVR 示例
打开解决方案 chatsrvr.sln。
在“生成”菜单上单击“生成”。
在“调试”菜单上单击“开始执行(不调试)”。
运行 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++ 向导、库和编译器的变化,但仍说明了如何完成所需的任务。