VC_MFC_socket编程报告分析和总结.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC++ MFC socket 编程 MFC 和 VC++ 2008-08-29 02:16:40 阅读 3056 评论 3 字号:大中小 订阅 socket 编程用法 随着计算机网络化的深入,计算机网络编程在程序设计的过 程中变得日益重要。由于 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_MSG IDC_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- m_pMainWnd; pDlg- m_MSGS.InsertString(0,m_szBuffer); memset(m_szBuffer,0,sizeof(m_szBuffer)); CAsyncSocket::OnReceive(nErrorCode); } void

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档