使用MFC快速实现网络编程CAsyncSock计算机等级考试

文章作者 100test 发表时间 2010:01:01 12:57:30
来源 100Test.Com百考试题网


  随着计算机网络化的深入,计算机网络编程在程序设计的过程中变得日益重要。由于 C 语言对底层操作的优越性,许多文章都曾经介绍过用 VC 进行 Socket 编程的方法。但由于都是直接利用动态连接库 wsock32.dll进行操作,实现比较繁琐。其实,VC 的 MFC 类库中提供了 CAsyncSocket 这样一个套接字类,用他来实现 Socket 编程,是非常方便的。
  ---- 本文将用一个 Echo 例程来介绍 CAsyncSocket 类的用法。
  ---- 一. 客户端
  ---- 1. 创建一个 Dialog Based 项目:CSockClient。
  ---- 2. 设计对话框
  ---- 去掉 Ok 和 Cancle 两个按钮,增加 ID_Connect(连接)、ID_Send(发送)、ID_Exit(关闭)按钮,增加 ListBox 控件 IDC_LISTMSG 和 Edit 控件 IDC_EDITMSG,并按下表在 ClassWizard 中为 CCSockClientDlg 类添加变量。
  Control ID
  Type Member
  IDC_EDITMSG
  CEdit m_MSGIDC_LISTMSG
  ClistBox
  m_MSGS
  ---- 3. CAsyncSocket 类用 DoCallBack 函数处理 MFC 消息,当一个网络事件发生时,DoCallBack 函数按网络事件类型:FD_READ、FD_WRITE、FD_ACCEPT、FD_CONNECT 分别调用 OnReceive、OnSend、OnAccept、OnConnect 函数。由于 MFC 把这些事件处理函数定义为虚函数,所以要生成一个新的 C 类,以重载这些函数,做法如下:
  ---- 以 Public 方式继承 CAsyncSocket 类,生成新类 MySock;
  ---- 为 MySock 类添加虚函数 OnReceive、OnConnect、OnSend
  ---- 4. 在 MySock.ccp 中添加以下代码 #include "CSockClient.h"#include "CSockClientDlg.h"
  ---- 5. 在 MySock.h 中添加以下代码 public: BOOL m_bConnected.
  //是否连接 UINT m_nLength.
  //消息长度 char m_szBuffer[4096].
  //消息缓冲区
  ---- 6. 在 MySock.ccp 中重载各函数 MySock::MySock(){ m_nLength=0.
  memset(m_szBuffer,0,sizeof(m_szBuffer)).
  m_bConnected=FALSE.}MySock::~MySock(){
  //关闭套接字 if(m_hSocket!=INVALID_SOCKET)
  Close().}
  void MySock::OnReceive(int nErrorCode) {
  m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0).
  //下面两行代码用来获取对话框指针 CCSockClientApp* pApp=(CCSockClientApp*)AfxGetApp().
  CCSockClientDlg* pDlg=(CCSockClientDlg*)pApp-

相关文章


C 中的方砖问题计算机等级考试
把SEH类型的系统异常转化为C 类型的异常计算机等级考试
RPC远程过程调用实例详解计算机等级考试
erase方法是否影响其它iterator?计算机等级考试
使用MFC快速实现网络编程CAsyncSock计算机等级考试
字符串函数strrev计算机等级考试
字符串函数strnicmp,strncmpi计算机等级考试
字符串函数strncpy计算机等级考试
字符串函数strncmp计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛