文档介绍:高级网络编程南昌大学何俊前言?本章主要介绍 WinSock, CAsyncSocket, CSocket 类, . MFC 网络编程? :基于 MFC 学****WinSock 的应用. ? : 网络聊天实例? :? #1 既可以作为服务器,也可以作客户机. ? #2 若作为服务器启动,则本机作为服务器. 若作为客户机启动,则输入服务器的 IP地址与端口号.? #3 采用 TCP 协议,使用非阻塞模式. ? : ? 1)系统初始化.? 2)添加”做服务器”按钮 IDC_BTN_SER 的消息响应函数 OnBtnSer. ?创建一个监听 Socket ? bind ? listen ? 3)添加”做客户机”按钮 IDC_BTN_CLI 的消息响应函数 OnBtnCli. ?创建一个 Socket ? connect ? 4)添加”退出”按钮 IDC_BTN_TUI 的消息响应函数 OnBtnTui. ?释放连接(服务器端有多个连接),关闭套接字,WSACleanUp ? 5)添加输入文本框 IDC_EDIT_SR 中”回车”的消息处理函数. ?若是客户端:调用 send ?若是服务器:发到所有客户端? 6)网络事件消息?在非阻塞通信方式中,: 网络事件 EPT FD_CONNECT FD_READ FD_CLOSE 含义连接请求到来连接完成收到数据收到 Socket 关闭消息服务器端连接并记录接收数据并处理关闭对应 Socket 客户端显示连接成功接收数据并处理关闭 Socket ? MFC 创建一个对话框程序 hat. ?在 中添加必要的头文件? #include <> ? #include <> //CIPAddressCtrl 所须? #include "" // 使用 winsock32 所必须包含的文件? #ment(lib, "wsock32") ? ,如图,并修改属性; ?端口输入框:勾选 Number, 范围 1024-4096, 默认为 1024. ?显示框:勾选 Multiline,Vertical scroll,Auto Vscroll,Read Only, 去掉 Auto Hscroll. ?文本输入框:勾选 Multiline,Want return ? ClassWizard 生成成员变量,作为控件输入. ?为 IDC_EDIT_XS 显示文本框生成 CString 类型的成员变量 m_ShowString; ?为 IDC_EDIT_SR 输入文本框生成 CString 类型的成员变量 m_InputString; ?为 IDC_EDIT_DK 端口文本框生成 UINT 类型的变量 m_Port, 范围为 1024-4096; ?为 IDC_IPADDRESS1 文本框生成 CIPAddressCtrl 类型的成员变量 m_ServerIP; ?补充:在构造函数中将变量 m_Port 初值改为 1024. ?? 4. 添加命令响应函数?添加”做服务器”按钮 IDC_BTN_SER 的消息响应函数 OnBtnSer. ?添加”做客户机”按钮 IDC_BTN_CLI 的消息响应函数 OnBtnCli. ?添加”退出”按钮 IDC_BTN_TUI 的消息响应函数 OnBtnTui. ?添加输入文本框 IDC_EDIT_SR 中”输入事件”消息处理函数,并更新消息映射:? afx_msg void OnInput();// 在头文件中添加? ON_EN_UPDATE(IDC_EDIT_SR,OnInput);// 在源文件中添加,表示控件有更新时就调用 OnInput. ? void hatDlg::OnInput() ? { ? MessageBox("hello!"); ? } ??? 5. 定义客户端和服务器端的网络消息,手工添加消息映射,添加消息响应函数? 1) 在头文件中定义客户端和服务器端的网络消息? #define SERVER_MESSAGE WM_USER+100 ? #define CLIENT_MESSAGE WM_USER+101 ? 2)