利用MFC进行网络编程Network Programming with MFC - Read.PPT

利用MFC进行网络编程Network Programming with MFC - Read.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用MFC进行网络编程Network Programming with MFC - Read

2005-10-30 利用MFC进行网络编程 Network Programming with MFC Prof. Xiao-jie Yuan 内容提要 网络基础知识 MFC网络编程 Windows套接字 CAsyncSocket类 TCP协议编程 聊天室客户端 聊天室服务器端 程序功能演示 网络基础知识 [//] 网络基础知识:对TCP/IP协议进行简要介绍 TCP/IP协议 Windows的网络通信建立在TCP/IP协议的基础上 TCP/IP协议族包含一系列构成互联网基础结构的网络协议 TCP/IP字面上代表两个重要协议 TCP: 传输控制协议 IP: 网际协议 TCP/IP参考模型 TCP/IP参考模型包括4层: 主机至网络层(Host-to-network) 互联层(Internet) 传输层(Transport) 应用层(Application) TCP/IP模型与OSI模型 几个典型的协议 IP协议(互联层) 是一个路由协议,负责IP寻址、数据包的分片和重组等任务 TCP协议(传输层) 提供一对一有连接的通信服务 提供连接的确认,数据包发送/接收顺序的控制,出错重传等机制 保证数据在传输中的正确性 HTTP协议(应用层) 用于传送Web网页文件 数据包的封装 MFC网络编程 [//] MFC网络编程:Windows套接字 什么是套接字 套接字是一种网络编程接口 英文:socket 字面意思:插座、插口 可以形象地将套接字理解为应用程序与网络协议之间的插口,也就是编程接口 套接字在TCP/IP模型中位于传输层之上 主要针对TCP、UDP协议进行抽象 不涉及应用层协议 套接字在TCP/IP模型中的位置 套接字是网络通信的端点 在网络中,主机H1上的一个套接字端点(endpoint)可以和主机H2上的另一个套接字端点进行通信 IP地址和端口号可以唯一确定一个套接字 Windows套接字 套接字的概念最初是由BSD Unix操作系统所实现的 Microsoft将Unix套接字中的大部分函数移植到Windows操作系统,形成了Windows套接字 Windows套接字针对Windows操作系统的消息驱动机制,对原有的Unix套接字进行了扩展,定义了一部分新的函数 在MFC中使用Windows套接字 使用MFC提供的Windows套接字功能 可以利用面向对象的概念进行网络编程 比直接调用Win32 API更方便、更直观 MFC中与套接字功能有关的类包括: CAsyncSocket类: 对套接字API进行了较低级别的封装 CSocket类: 对套接字API进行了较高级别的封装 CSocket类是CAsyncSocket类的派生类 套接字类的层次 [//] MFC网络编程:CAsyncSocket类 CAsyncSocket类 虽然对Windows Sockets API的封装级别较低 但该类为网络通信程序的开发提供了很大的灵活性 可以对一些有关网络协议的具体选项参数进行设定 CAsyncSocket类 CAsyncSocket类只将套接字的通知消息改进为C++语言中的可重载的消息处理函数 没有像CSocket那样引入文件、文档、串行化等其他额外的概念,这使编程变得更加简洁方便 创建CAsyncSocket类对象 CAsyncSocket类对象代表网络通信端点 采用两步构造法: 1、定义CAsyncSocket类对象变量 CAsyncSocket sock; 2、调用Create成员函数进一步创建该对象 sock.Create(); 套接字的种类 流套接字(stream socket) 使用TCP协议进行通信 具有TCP协议所拥有的各种特征 面向连接的、可靠的数据流传输服务 数据包不会出现丢失、重复、乱序等现象 数据报套接字(datagram socket) 使用UDP协议进行通信 具有UDP协议所拥有的各种特征 面向非连接的、不可靠的用户数据报传输服务 数据包可能出现丢失、重复、乱序等现象 指定套接字的种类 Create成员函数缺省创建的是流套接字SOCK_STREAM 也可以根据需要指明创建数据报套接字SOCK_DGRAM 流套接字和数据报套接字在收发数据时所调用的函数有所不同 流套接字调用成员函数 Send 和 Receive 数据报套接字调用成员函数 SendTo 和 ReceiveFrom 套接字的工作模式 套接字在使用时分为两种模式 阻塞式 非阻塞式 阻塞模式也称为同步模式 非阻塞模式也称为异步模式 阻塞模式 在阻塞模式下,套接字函数要一直等到全部操作完成后才返回 例如,在建立连接时 函数必须等到连接完全建立好为止 调用函数的线程在这期间被挂起 程序看起来好像停止了响应 阻塞模式的缺点 以阻塞模式执行套接字函数,可

文档评论(0)

youbika + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档