《Web编程实用技术教程》课程教学资源(PPT课件讲稿)第5章 MFC WinSock类的编程

第5 MFC WInS0ck类的编程 51 CAsyncSocke类 52CS0ckt类 53CS0cket类的编程模型 54用 CAsyncSocke类实现聊天室程序 55用 CSocket类实现聊天室程序
第5章 MFC WinSock类的编程 5.1 CAsyncSocket类 5.2 CSocket类 5.3 CSocket类的编程模型 5.4 用CAsyncSocket类实现聊天室程序 5.5 用CSocket类实现聊天室程序

第5章 MFC Winsock类的编程 为简化套接字网络编程,更方便地利用 Windows 的消息驱动机制,微软的基础类库( Microsoft Foundation Class Libary,简称MFC),提供了 两个套接字类,在不同的层次上对 Windows socket API函数进行了封装,为编写 Windows socket网络 通信程序,提供了两种编程模式
为简化套接字网络编程,更方便地利用Windows 的消息驱动机制,微软的基础类库(Microsoft Foundation Class Libary,简称MFC),提供了 两个套接字类,在不同的层次上对Windows Socket API函数进行了封装,为编写Windows Socket网络 通信程序,提供了两种编程模式。 第5章 MFC Winsock类的编程

第5章 MFC Winsock类的编程 CAsyncSocket类,在很低的层次上对 Windows sockets AP进行了封装。 它的成员函数和 Windows Sockets APl的函数调用直接对 应。一个 CAsyncSocke对象代表了一个 Windows套接字。它是 网络通信的端点。除了把套接字封装成C+的面向对象的形式 供程序员使用以外,这个类唯一所增加的抽象就是将那些与套 接字相关的 Windows消息变为 CAsyncSocket类的回调函数。 如果你对网络通信的细节很熟悉,可以利用 Windows Sockets ap编程的灵活性。但是要自己解决阻塞问题、字节顺 序问题、字符串转换问题
CAsyncSocket类,在很低的层次上对Windows Sockets API进行了封装。 它的成员函数和Windows Sockets API的函数调用直接对 应。一个CAsyncSocket对象代表了一个Windows套接字。它是 网络通信的端点。除了把套接字封装成C++的面向对象的形式 供程序员使用以外,这个类唯一所增加的抽象就是将那些与套 接字相关的Windows消息变为CAsyncSocket类的回调函数。 如果你对网络通信的细节很熟悉,可以利用Windows Sockets API编程的灵活性。但是要自己解决阻塞问题、字节顺 序问题、字符串转换问题。 第5章 MFC Winsock类的编程

第5章 MFC Winsock类的编程 CSocket类,从 CAsyncSocket类派生,是对 Windows Sockets apl的高级封装。 CSocket类继承了 CASyncSocket类的 许多成员函数,用法一致。 CSocket类的高级表现在三个方面: (1) CSocket结合 Archive类来使用套接字。 (2) CSocket管理了通信的许多方面,如字节顺序问题和 字符串转换问题。 (3) CSocket类为 Windows消息的后合处理提供了阻塞的 工作模式( Blocking)
CSocket类,从CAsyncSocket类派生,是对Windows Sockets API的高级封装。CSocket类继承了CAsyncSocket类的 许多成员函数,用法一致。CSocket类的高级表现在三个方面: (1)CSocket结合Archive类来使用套接字。 (2)CSocket管理了通信的许多方面,如字节顺序问题和 字符串转换问题。 (3)CSocket类为Windows消息的后台处理提供了阻塞的 工作模式(Blocking)。 第5章 MFC Winsock类的编程

第5章 MFC Winsock类的编程 这两个类提供了事件处理函数,编程者通过对事件处 理函数进行重载,可方便地对套接字发送数据、接收数据 等事件进行处理。同时,可以结合MFC的其它类来使用这 两个套接字类,并利用MFC的各种可视化向导,从而大大 简化了编程。 在MFC中,有一个名为 afx h的包含文件, C: Program Files\microsoft Visual Studio 11.0lvc latlmfc include lafxsock h。在这个文件中定义了 CAsyncSocket, CSocket,和 CSocketFile这三个套接字类 class CasyncSocket: public Obiect class CSocket public CAsyncSocket class CsocketFile public cfile
这两个类提供了事件处理函数,编程者通过对事件处 理函数进行重载,可方便地对套接字发送数据、接收数据 等事件进行处理。同时,可以结合MFC的其它类来使用这 两个套接字类,并利用MFC的各种可视化向导,从而大大 简化了编程。 在MFC中,有一个名为afxSock.h的包含文件, C:\Program Files\Microsoft Visual Studio 11.0\VC \atlmfc \include \afxsock.h 。在这个文件中定义了CAsyncSocket, CSocket,和CSocketFile这三个套接字类。 class CAsyncSocket : public Cobject class CSocket : public CAsyncSocket class CSocketFile : public CFile 第5章 MFC Winsock类的编程

5 I CasyncSocket类P110 CASyncSocket类从 Cobject类派生而来,如下图所示 cobject CAsyncSocket 使用 CAsyncSocket类进行网络编程,方便处理各种网络 事件,方便构造用户界面,具有较大的灵活性
CAsyncSocket类从Cobject类派生而来,如下图所示: 5.1 CasyncSocket类 P110 使用CAsyncSocket类进行网络编程,方便处理各种网络 事件,方便构造用户界面,具有较大的灵活性

5.1.1使用 CAsyncSocke类的一般步骤P110 网络应用程序一般采用客户服务器模式,它们使用 CAsyncSocket类编程的 步骤有所不同,参表51 序号 服务器( Server) 客户机( Client) //构造一个套接字 //构造一个套接字 CAsyncSocket sock Srvr; CAsync Socket sockClient //刨建 SOCKET句柄,绑定到指定的端口|//刨建 SOCKET旬柄,使用默认参数 sockSrvr. Create(nPort) sockClient. Create 3 //启动监听,时刻准备接受连接请求 sockSrvr. Listen(; //请求连接到服务器 sockClient. Connect(strAddr npor //构造一个新的空的套接字 CAsyncSocket sockRecv //接收连接请求 sockSrvr. Accept( ockRecv) //接收数据 //发送数据 sockRecv. Receive(pBuf, nLen) sockClient. Send(pBuf, nLen 7 //发送数据 //接收数据 sockRecv. Send(pBuf, nLen sockClient. ReceivelpBuf, nLen) 8 //关闭套接字对象 //关闭套接字对象 sockRecv. Close sockClient. Close()
网络应用程序一般采用客户/服务器模式,它们使用CAsyncSocket类编程的 步骤有所不同,参表5.1。 5.1.1 使用CAsyncSocket类的一般步骤 P110 序 号 服务器(Server) 客户机(Client) 1 //构造一个套接字 CAsyncSocket sockSrvr; //构造一个套接字 CAsyncSocket sockClient; 2 //创建SOCKET句柄,绑定到指定的端口 sockSrvr.Create(nPort); //创建SOCKET句柄,使用默认参数 sockClient.Create( ); 3 //启动监听,时刻准备接受连接请求 sockSrvr.Listen( ); 4 //请求连接到服务器 sockClient.Connect(strAddr, nport); 5 //构造一个新的空的套接字CAsyncSocket sockRecv; //接收连接请求sockSrvr.Accept(sockRecv); 6 //接收数据 sockRecv.Receive(pBuf, nLen); //发送数据 sockClient.Send(pBuf, nLen); 7 //发送数据 sockRecv. Send(pBuf, nLen); //接收数据 sockClient.Receive(pBuf, nLen); 8 //关闭套接字对象 sockRecv.Close( ); //关闭套接字对象 sockClient.Close( );

5.1.1使用 CAsyncSocket类的一般步骤P110 (1)客户机与服务器端都要首先构建一个 CASyncSocke对象, 然后使用该对象的 Creat成员函数来创建底层的 SOCKET句柄。 服务器端一定要绑定到特定的端口 2)服务器端的套接字对象应使用 CAsyncSocket: Listen成员 函数启动监听,当收到来自客户端的连接请求,就调用 CASyncSocket: Accept成员函数来接收,此时建立一个新的空 的 CAsyncSocket对象用于数据交换;客户端的套接字对象应使 用 CASyncSocket: Connect成员函数连接到服务器的套接字对象。 连接建立以后,双方可以进行数据交换。 (3)调用 CAsyncSocket的Send和 Receive对象与通信对方交换 数据。这些成员函数与 Windows socket api用法基本相同。 (4)关闭并销毁 CAsyncSocket对象
(1)客户机与服务器端都要首先构建一个CAsyncSocket对象, 然后使用该对象的Creaet成员函数来创建底层的SOCKET句柄。 服务器端一定要绑定到特定的端口。 (2)服务器端的套接字对象应使用CAsyncSocket::Listen成员 函数启动监听,当收到来自客户端的连接请求,就调用 CAsyncSocket::Accept成员函数来接收,此时建立一个新的空 的CAsyncSocket 对象用于数据交换;客户端的套接字对象应使 用CAsyncSocket::Connect成员函数连接到服务器的套接字对象。 连接建立以后,双方可以进行数据交换。 (3) 调用CAsyncSocket的Send和Receive对象与通信对方交换 数据。这些成员函数与Windows Socket API用法基本相同。 (4)关闭并销毁CAsyncSocket对象。 5.1.1 使用CAsyncSocket类的一般步骤 P110

5.1.1使用 CAsyncSocket类的一般步骤P110 使用 CASyncSocket类进行网络编程,具有较大的灵活性, 但编程者必须解决好以下3个问题: (1)阻塞问题。 CAsyncSocket类不支持阻塞工作模式。 (2)字节顺序的转换。用户程序需要自己对不同的字节进 行转换。 (3)字符串转换。用户程序需要自己解决如 Unicode和 multibyte set字符串之间的转换
使用CAsyncSocket类进行网络编程,具有较大的灵活性, 但编程者必须解决好以下3个问题: (1)阻塞问题。CAsyncSocket类不支持阻塞工作模式。 (2)字节顺序的转换。用户程序需要自己对不同的字节进 行转换。 (3)字符串转换。用户程序需要自己解决如Unicode和 multibyte set字符串之间的转换。 5.1.1 使用CAsyncSocket类的一般步骤 P110

5.12创建 CAsyncSocket类对象P111 这里将 CAsyncSocket类对象称为异步套接字对象。创建异 步套接字对象一般分为两个步骤,首先构造一个 CAsyncSocket 对象,再创建该对象的底层的 SOCKET句柄。 1.创建空的异步套接字对象 通过调用 CAsyncSocket类的构造函数,创建一个新的空 CASyncSocket类套接字对象,构造函数不带参数。然后必须调 用它的 Create成员函数,来创建底层的套接字数据结构,并绑 定它的地址
这里将CAsyncSocket类对象称为异步套接字对象。创建异 步套接字对象一般分为两个步骤,首先构造一个CAsyncSocket 对象,再创建该对象的底层的SOCKET句柄。 1.创建空的异步套接字对象 通过调用CAsyncSocket类的构造函数,创建一个新的空 CAsyncSocket类套接字对象,构造函数不带参数。然后必须调 用它的Create成员函数,来创建底层的套接字数据结构,并绑 定它的地址。 5.1.2 创建CAsyncSocket类对象 P111
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《数字图像处理》课程PPT教学课件(讲稿)第二章 图像获取、显示和表示.ppt
- 香港中文大学:《Topics in Theoretical Computer Science》课程教学资源(PPT课件讲稿)量子计算 Quantum computing.pptx
- 香港科技大学:深度学习导论(PPT讲稿)Introduction to Deep Learning.pptx
- 北京大学软件研究所:高级软件工程(PPT讲稿)云计算与平台即服务.ppt
- 合肥学院:《数据库原理与应用》课程教学资源(PPT课件)第1章 数据库系统概述(主讲:叶潮流).ppt
- 《数据库原理与应用》课程PPT教学课件(SQL Server)第9章 存储过程和触发器.ppt
- 《The C++ Programming Language》课程教学资源(PPT课件讲稿)Lecture 02 Procedure-Based Programming.ppt
- 东南大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 图.ppt
- 北京大学:《高级软件工程》课程教学资源(PPT课件讲稿)第一讲 软件与软件开发.ppt
- 西安电子科技大学:《现代密码学》课程教学资源(PPT课件讲稿)第二章 流密码(主讲:董庆宽).pptx
- 《Photoshop基础教程与上机指导》教学资源(PPT讲稿)第18章 扫描和修饰图像.ppt
- 中国水利水电出版社:《单片机原理及应用》课程PPT教学课件(C语言版)第8章 单片机系统扩展(主编:周国运).ppt
- 西安电子科技大学:《操作系统 Operating Systems》课程教学资源(PPT课件讲稿)Chapter 04 Memory Management.ppt
- 《网页设计》课程教学资源:课程教学大纲.doc
- 《人工智能技术导论》课程教学资源(PPT课件讲稿)第3章 图搜索与问题求解.ppt
- 清华大学:TCP and Congestion Control(1).pptx
- 清华大学:域内路由选择(PPT课件讲稿)Intra-domain routing.pptx
- 山东大学:IPv6试商用的进展和挑战(PPT讲稿,网络与信息中心:秦丰林).pptx
- 克里特大学:The Application of Artificial Neural Networks in Engineering and Finance.ppt
- 关键词抽取、社会标签推荐及其在社会计算中的应用.pptx
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第五章 运输层.ppt
- 《神经网络 Neural Networks》课程教学资源(PPT课件讲稿)Ch 8 Artificial Neural networks.pptx
- PROGRAMMING METHDOLODGY AND SOFTWARE ENGINEERING(PPT讲稿)C Programming Review.ppt
- 计算机网络技术基础(PPT课件讲稿).ppt
- 《网络搜索和挖掘关键技术 Web Search and Mining》课程教学资源(PPT讲稿)Lecture 13 Matrix Factorization and Latent Semantic Indexing.ppt
- 多媒体技术及应用(PPT讲稿)多媒体音频技术.ppt
- 山东大学:《微机原理及单片机接口技术》课程教学资源(PPT课件讲稿)第四章 指令系统及汇编语言程序设计(4.1-4.4).ppt
- 东南大学:《C++语言程序设计》课程教学资源(PPT课件讲稿)Chapter 13 Object-Oriented Programming - Polymorphism.ppt
- 《C++语言程序设计》课程教学资源(PPT课件)第14讲 运算符重载.ppt
- 淮阴工学院:《数据库原理》课程教学资源(PPT课件讲稿)第4章 结构化查询语言SQL.ppt
- 《计算机网络 COMPUTER NETWORKS》课程教学资源(PPT课件讲稿)Chapter 18 互联网协议 Internet Protocols(IP).ppt
- 计算机应用专业《计算机网络》教学大纲.doc
- 《计算机网络安全》课程教学资源(PPT课件讲稿)第四章 数据加密技术.ppt
- 西安培华学院:《计算机网络工程》课程教学资源(PPT课件讲稿)第1章 网络工程知识(主讲:张伟).ppt
- 对外经济贸易大学:《大学计算机基础》课程电子教案(PPT课件)第5章 PowerPoint幻灯片制作(PowerPoint 2010).pptx
- 中国地质大学(武汉):R语言入门教程(PPT讲稿).ppt
- 西南民族大学:软件需求分析与总体设计(PPT讲稿,主讲:殷锋).ppt
- 《软件测试 Software Testing》教学资源(PPT讲稿)Part 1 The Big Picture.ppt
- 系统编程工具REXX和CLIST.ppt
- 北京大学:基于信息利用的烟花算法研究(PPT讲稿)Research on Fireworks Algorithms from the Perspective of Information Utilization.pptx