《Visual C++程序设计及实践》课件第9章网络编程.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Visual C++程序设计及实践》课件第9章网络编程.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual C+程序设计及实践 Visual C+程序设计及实践课件第9章 网络编程 Visual C+ 程序设计 实践 课件 网络 编程
- 资源描述:
-
1、-1-本章目标 理解计算机网络编程的概念 理解TC/IP协议规范 理解Windows Sockets编程规范 掌握客户/服务器编程模型 掌握使用CAsyncSocket类进行UDP异步编程的方法 掌握使用CAsyncSocket类进行TCP异步编程的方法 掌握使用CSocket类进行TCP同步编程的方法网络编程基础网络通信基本原理 网络协议就是网络之间沟通、交流的桥梁。网络协议是计算机在网络中实现通信时必须遵守的约定,是对信息传递的速率、传输代码、代码结构、传输控制步骤、出错控制等做出规定并制定出标准-2-网络编程基础数据封装 数据打包的过程称为封装,就是在数据前面加上特定的协议头部-3-网络
2、编程基础IP地址和端口 IP地址:网络中每台计算机都必须有一个唯一的IP地址,IP地址一共32位,占4个字节,常用“点分十进制”的格式来表示,例如192.168.0.16。端口:用不同的端口号来标示同一个主机中正在进行通信的不同应用程序,端口也是一个逻辑数据,共16为,占2个字节。-4-网络编程基础套接字和字节序 套接字p 由美国伯克利大学在Unix上推出了一种应用程序访问通信协议的调用:Socket(套接字)p 套接字存在于通信区域中,通信区域也叫地址族,它是一个抽象的概念,主要用于将通过套接字通信的进程的共有特性综合在一起p 套接字通常只与同一区域的套接字交换数据(也有可能跨区域通信,但这
3、只在执行了某种转换进程后才能实现)。Windows Sockets只支持一个通信区域:网际域(AF_INET),这个域被使用网际协议簇通信的进程使用。p 套接字是一种内核对象,内核对象可以简单理解为由操作系统维护的一种数据结构。-5-网络编程基础套接字和字节序 字节序p 不同的计算机存放多字节值时,顺序可能会不同,有的是起始地址存放低位字节(低位先存),有的是起始地址存放高位字节(高位先存)。p 主机字节序:基于Intel的CPU,即常用的PC机使用的是低位先存。p 网络字节序:为保证数据的正确性,在网络协议中需要指定网络字节顺序,TCP/IP协议使用16位整数和32位整数的高位先存格式。-6
4、-网络编程基础Windows Sockets Windows Sockets是Windows下得到广泛应用的、开放的、支持多种协议的网络编程接口 从程序员的角度看Windows Socket是一组用于网络通信的可调用的API函数。-7-网络编程基础客户/服务器模式 在TCP/IP网络通信中,两个应用程序(进程)间的通信模式是客户/服务器(Client/Server)模式。一般称等待被其他进程连接的一端为服务器,而连接其他进程的一端为客户端。客户/服务器模式的建立基于以下两点:非对等作用和通信完全是异步的。该模式在操作过程中采取的是主动请示方式。-8-网络编程基础客户/服务器模式 服务器工作过程
5、:(1)打开一个通信信道(端口)并告知本地主机,它准备在某一个公认的地址(IP地址)上接受客户的连接请求;(2)进入监听状态,等待客户请求到达该端口;(3)接收到客户端服务请求,处理该请求并发送应答信号;(4)返回到第2步,等待另一客户端请求;(5)关闭服务器。客户端工作过程:(1)打开一个通信通道,并连接到服务器所在的特定端口;(2)向服务器发送服务请求报文,等待并接收应答,可继续提出请求;(3)请求结束后,关闭通信。-9-网络编程基础SOCKET API编程 Blocking和Non_blocking模式 使用Socket APIp 加载Socket Api库p 创建Socket套接字描述
6、符p 绑定Socket套接字描述符p 监听套接字p 接收数据p 接受数据并销毁相关资源p 建立客户端程序-10-网络编程基础MFC对WinSock的支持 CAsyncSocket类:用于异步非阻塞通信的Socket封装类,封装了Windows Sockets API函数,实现了TCP和UDP协议的通信操作,可方便地进行底层的网络事件通知及信息传输控制 CSocket类:是CAsyncSocket类的派生类,用于同步阻塞通信的类。该类在内部实现了同步通信机制,用于操作通讯过程的函数和父类CAsyncSocket类同名-11-网络编程基础MFC对WinSock的支持 CAsyncSocket类和C
7、Socket类的常用成员函数:虚函数虚函数函数说明函数说明适用协议适用协议Create()创建套接字,并绑定到指定IP地址和端口上TCP/UDPListen()进入监听状态TCPAccept()接受客户端连接,返回新的套接字TCPConnect()连接到服务器端TCPSend()发送数据TCPSendTo()发送数据UDPReceive()接收数据TCPRecieveFrom()接收数据UDPClose()关闭套接字TCPGetPeerName()获得另一端的IP地址和端口信息TCPGetSockName()获得本机绑定的IP地址和端口信息TCP/UDP-12-网络编程基础MFC网络编程方法
8、包含afxsock.h文件,一般在stdafx.h文件中包含该文件,。调用全局函数AfxSocketInit()初始化WinSock库。创建CAsyncSocket或CSocket类的派生类。可以覆盖OnAccept()、OnRecieve()等函数以实现事件通知效果。选择使用TCP或UDP协议进行通信。创建CAsyncSocket、CSocket类或者这两个类的派生类的对象,然后调用Create()函数创建套接字。通信完毕,调用Close()成员函数关闭Socket。-13-UDP通信编程UDP异步通信 使用CAsyncSocket类进行UDP进行异步编程的步骤:创建CAsyncSocket
9、类派生类。创建CAsyncSocket类派生类对象。调用Create()成员函数创建套接字(Socket),并将套接字绑定到本地IP地址和端口上。让应用程序进入等待接收数据状态,这一步系统自动进行。接收其他通信端发来的数据。向其他通信端发送数据。通信完毕后,关闭套接字,若是栈对象,对象在离开作用域时析构函数内自动进行关闭操作。-14-UDP通信编程创建CAsyncSocket类派生类 CAsyncSocket类是一个异步通讯类p实现了事件通知机制,通过虚函数机制通知应用程序,p为了使用这种虚函数机制,需要从CAsyncSocket派生子类,并重新定义相应的虚函数虚函数虚函数函数说明函数说明适用
10、协议适用协议OnAccept()在TCP协议通信中,当服务器端收到客户端的连接请求时,该函数被框架自动调用。在子类中覆盖该函数,可以调用Accept()成员函数接受连接TCPOnRecieve()当本机缓冲区接收到数据时,该函数自动被框架调用,一般在该函数内调用Receive()或RecieveFrom()接收数据TCP/UDPOnConnect()当通讯成功建立连接后,该函数自动被框架调用TCPOnSend()当可以发送数据时,该函数自动被框架调用,一般在该函数内调用Send()成员函数发送数据TCP/UDPOnClose()当连接被关闭时,该函数自动被框架调用TCPOnOutOfBandD
展开阅读全文