欢迎来到天天文库
浏览记录
ID:9882332
大小:650.51 KB
页数:58页
时间:2018-05-11
《lesson8_mfc网络编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、利用MFC进行网络编程NetworkProgrammingwithMFCProf.Xiao-jieYuan内容提要网络基础知识MFC网络编程Windows套接字CAsyncSocket类TCP协议编程聊天室客户端聊天室服务器端程序功能演示TCP/IP协议Windows的网络通信建立在TCP/IP协议的基础上TCP/IP协议族包含一系列构成互联网基础结构的网络协议TCP/IP字面上代表两个重要协议TCP:传输控制协议IP:网际协议网络基础知识TCP/IP参考模型TCP/IP参考模型包括4层:主机至网络层(Host-to-network)互联层(Internet)传输层(Transport)应用层
2、(Application)网络基础知识TCP/IP模型与OSI模型应用层表示层传输层网络层数据链路层物理层会话层应用层传输层互联层主机至网络层OSITCP/IP网络基础知识几个典型的协议IP协议(互联层)是一个路由协议,负责IP寻址、数据包的分片和重组等任务TCP协议(传输层)提供一对一有连接的通信服务提供连接的确认,数据包发送/接收顺序的控制,出错重传等机制保证数据在传输中的正确性HTTP协议(应用层)用于传送Web网页文件网络基础知识数据包的封装应用层传输层互联层主机至网络层TCP/IP模型应用程序HTTP协议TCP协议IP协议网卡驱动以太网首部IP首部TCP首部HTTP首部用户数据以太网
3、尾部IP首部TCP首部HTTP首部用户数据TCP首部HTTP首部用户数据HTTP首部用户数据用户数据使用协议封装的数据包网络基础知识MFC网络编程什么是套接字套接字是一种网络编程接口英文:socket字面意思:插座、插口可以形象地将套接字理解为应用程序与网络协议之间的插口,也就是编程接口套接字在TCP/IP模型中位于传输层之上主要针对TCP、UDP协议进行抽象不涉及应用层协议Windows套接字套接字在TCP/IP模型中的位置主机至网络层以太网令牌环帧中继ATM...互联层IPARPICMPIGMP传输层TCPUDP应用层套接字SocketsWindows套接字套接字是网络通信的端点在网络中,
4、主机H1上的一个套接字端点(endpoint)可以和主机H2上的另一个套接字端点进行通信IP地址和端口号可以唯一确定一个套接字Windows套接字Windows套接字套接字的概念最初是由BSDUnix操作系统所实现的Microsoft将Unix套接字中的大部分函数移植到Windows操作系统,形成了Windows套接字Windows套接字针对Windows操作系统的消息驱动机制,对原有的Unix套接字进行了扩展,定义了一部分新的函数Windows套接字在MFC中使用Windows套接字使用MFC提供的Windows套接字功能可以利用面向对象的概念进行网络编程比直接调用Win32API更方便、更
5、直观MFC中与套接字功能有关的类包括:CAsyncSocket类:对套接字API进行了较低级别的封装CSocket类:对套接字API进行了较高级别的封装CSocket类是CAsyncSocket类的派生类Windows套接字套接字类的层次CObjectCAsyncSocketCSocketWindows套接字CAsyncSocket类虽然对WindowsSocketsAPI的封装级别较低但该类为网络通信程序的开发提供了很大的灵活性可以对一些有关网络协议的具体选项参数进行设定CAsyncSocket类CAsyncSocket类CAsyncSocket类只将套接字的通知消息改进为C++语言中的可重
6、载的消息处理函数没有像CSocket那样引入文件、文档、串行化等其他额外的概念,这使编程变得更加简洁方便CAsyncSocket类创建CAsyncSocket类对象CAsyncSocket类对象代表网络通信端点采用两步构造法:1、定义CAsyncSocket类对象变量CAsyncSocketsock;2、调用Create成员函数进一步创建该对象sock.Create();CAsyncSocket类套接字的种类流套接字(streamsocket)使用TCP协议进行通信具有TCP协议所拥有的各种特征面向连接的、可靠的数据流传输服务数据包不会出现丢失、重复、乱序等现象数据报套接字(datagrams
7、ocket)使用UDP协议进行通信具有UDP协议所拥有的各种特征面向非连接的、不可靠的用户数据报传输服务数据包可能出现丢失、重复、乱序等现象CAsyncSocket类指定套接字的种类Create成员函数缺省创建的是流套接字SOCK_STREAM也可以根据需要指明创建数据报套接字SOCK_DGRAM流套接字和数据报套接字在收发数据时所调用的函数有所不同流套接字调用成员函数Send和Receive数据
此文档下载收益归作者所有