《第1章网络编程基础优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第1章网络编程基础优秀PPT.ppt(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1章网络编程基础现在学习的是第1页,共49页1.1 概述一、网络编程一、网络编程 网络编程网络编程就是利用网络应用编程接口编写网就是利用网络应用编程接口编写网络应用程序,实现网络应用进程间的信息交络应用程序,实现网络应用进程间的信息交互功能。互功能。主要内容:主要内容:基于基于NETBIOSNETBIOS的网络编程的网络编程 基于基于TCP/IPTCP/IP协议栈的协议栈的WindowsWindows网络编程网络编程 多线程网络编程多线程网络编程现在学习的是第2页,共49页1.1 概述二、应用进程间的通信二、应用进程间的通信 同一系统上的应用进程间的通信同一系统上的应用进程间的通信l l也称
2、为进程间通信也称为进程间通信也称为进程间通信也称为进程间通信 不同系统上的应用进程间的通信不同系统上的应用进程间的通信l l必须通过网络编程接口访问网络协议提供的服必须通过网络编程接口访问网络协议提供的服必须通过网络编程接口访问网络协议提供的服必须通过网络编程接口访问网络协议提供的服务来实现务来实现务来实现务来实现现在学习的是第3页,共49页网络协议 网网络协议是网是网络上所有上所有设备(网(网络服服务器、器、计算机及算机及交交换机机、路由器路由器、防火防火防火防火墙墙等)之等)之间通信通信规则的集合,它定的集合,它定义了通信了通信时信息必信息必须采用的格采用的格式和式和这些格式的意些格式的意
3、义。大多数网。大多数网络都采用分都采用分层的的体系体系结构,每一构,每一层都建立在它的下都建立在它的下层之上,向它之上,向它的上一的上一层提供一定的服提供一定的服务.常常常常见见的的的的协议协议有:有:有:有:TCP/IPTCP/IP协议、IPX/SPX协议协议、NetBIOS协议协议等。在局域网中用得的比等。在局域网中用得的比等。在局域网中用得的比等。在局域网中用得的比较较多的是多的是多的是多的是NetBIOS.。用用户如果如果访问Internet,则则必必必必须须在网在网在网在网络络协议协议中添加中添加中添加中添加TCP/IP协议。现在学习的是第4页,共49页1.2 TCP/IP简介 TC
4、P/IP(Transmission Control Protocol/Internet Protocol,传输控制传输控制协议协议/网际协议)是一系列协议,或者网际协议)是一系列协议,或者说是一个协议族,它定义了数据传输如说是一个协议族,它定义了数据传输如何通过因特网进行交换。允许分布在各何通过因特网进行交换。允许分布在各地的装着完全不同系统的计算机互相通地的装着完全不同系统的计算机互相通信,是一个真正的开放系统。信,是一个真正的开放系统。现在学习的是第5页,共49页1.2 TCP/IP简介1.2.1 开放系统互连参考模型(开放系统互连参考模型(OSI/RM模型)模型)应用层(Applicat
5、ion)传输层(Transport)网络层(Network)表示层(Presentation)会话层(Session)链路层(Data Link)物理层(Physical)7654321面向数据处理(资源子网)面向数据处理(资源子网)面向数据通信(通信子网)面向数据通信(通信子网)承上启下,接口沟通的作用承上启下,接口沟通的作用现在学习的是第6页,共49页层层 次次数据数据单位单位功功 能能物理层物理层比特比特或位或位物物理理层层负负责责把把逐逐个个的的比比特特从从一一跳跳(结结点点)移移动动到到另另一一跳(结点)跳(结点)链路层链路层帧帧数数据据链链路路层层负负责责把把帧帧从从一一跳跳(结结
6、点点)移移动动到到另另一一个个结结点点网络层网络层分组分组或包或包网络层负责把逐个的分组从源主机交付到目的主机网络层负责把逐个的分组从源主机交付到目的主机传输层传输层会话会话报文报文运运输输层层负负责责把把完完整整的的报报文文进进行行源源点点到到终终点点(端端到到端端)的交付的交付会话层会话层会话会话报文报文会话层负责对话的控制和同步会话层负责对话的控制和同步表示层表示层会话会话报文报文表示层负责转换、压缩和加密表示层负责转换、压缩和加密应用层应用层用户用户数据数据应应用用层层负负责责向向用用户户提提供供服服务务。为为用用户户提提供供相相应应的的界界面面,以便使用提供的连网功能,以便使用提供的
7、连网功能现在学习的是第7页,共49页应用层运输层网络层表示层会话层 链路层物理层7654321应用层运输层网络层表示层会话层 链路层物理层7654321对等层协议(第对等层协议(第对等层协议(第对等层协议(第6 6层)层)层)层)网络层 链路层物理层321网络层 链路层物理层321数据传输媒体数据传输媒体对等层协议(第对等层协议(第对等层协议(第对等层协议(第7 7层)层)层)层)对等层协议(第对等层协议(第对等层协议(第对等层协议(第5 5层)层)层)层)对等层协议(第对等层协议(第对等层协议(第对等层协议(第4 4层)层)层)层)设备设备A中间结点中间结点中间结点中间结点7-6 接口设备设
8、备B6-5 接口5-4 接口4-3 接口3-2 接口2-1 接口7-6 接口6-5 接口5-4 接口4-3 接口3-2 接口2-1 接口现在学习的是第8页,共49页vvOSI模型是一个模型是一个7层模型。每一层实现特定的功能,层模型。每一层实现特定的功能,并且只与上下两层直接通信。高层协议偏重于处理并且只与上下两层直接通信。高层协议偏重于处理用户服务和各种应用请求。低层协议偏重于处理实用户服务和各种应用请求。低层协议偏重于处理实际的信息传输。际的信息传输。vv分层协议的目的在于把各种特定的功能分离开来,分层协议的目的在于把各种特定的功能分离开来,并使其实现对其他层次来说是透明的。这种分层并使其
9、实现对其他层次来说是透明的。这种分层结构使各个层次的设计和测试相对独立。结构使各个层次的设计和测试相对独立。现在学习的是第9页,共49页1.2 TCP/IP简介1.2.2 互联网参考模型(互联网参考模型(TCP/IP模型)模型)运输层运输层网间网层网间网层应用层应用层(各种应用层协(各种应用层协议)议)网络接口层网络接口层 负责将发送的信息组帧,通过物理层向选定网络发送,负责将发送的信息组帧,通过物理层向选定网络发送,负责将发送的信息组帧,通过物理层向选定网络发送,负责将发送的信息组帧,通过物理层向选定网络发送,或者从网络上接收物理帧,将取出数据控制信息的或者从网络上接收物理帧,将取出数据控制
10、信息的或者从网络上接收物理帧,将取出数据控制信息的或者从网络上接收物理帧,将取出数据控制信息的IPIP数据数据数据数据包交给网间网层包交给网间网层包交给网间网层包交给网间网层 负责相邻计算机之间的通信,包括路径选择、流量控制、负责相邻计算机之间的通信,包括路径选择、流量控制、负责相邻计算机之间的通信,包括路径选择、流量控制、负责相邻计算机之间的通信,包括路径选择、流量控制、拥塞、差错报告功能拥塞、差错报告功能拥塞、差错报告功能拥塞、差错报告功能 提供应用程序之间端到端的通信提供应用程序之间端到端的通信提供应用程序之间端到端的通信提供应用程序之间端到端的通信 向用户提供一组常用的应用程序,使用户
11、在需要向用户提供一组常用的应用程序,使用户在需要向用户提供一组常用的应用程序,使用户在需要向用户提供一组常用的应用程序,使用户在需要时调用该程序就可以完成对时调用该程序就可以完成对时调用该程序就可以完成对时调用该程序就可以完成对TCP/IPTCP/IP互连网络的访问互连网络的访问互连网络的访问互连网络的访问现在学习的是第10页,共49页1.2 TCP/IP简介TCP/IP与与OSI/RM的关系:的关系:应用层应用层表示层表示层会话层会话层传输层传输层网络层网络层链路层链路层物理层物理层运输层运输层网际层网际层应用层应用层(各种应用(各种应用层协议)层协议)网络接口网络接口层层现在学习的是第11
12、页,共49页1.2 TCP/IP简介应用层应用层表示层表示层会话层会话层各种应用程序层各种应用程序层SMTPFTPHTTPDNSSNMPNFSTFTPRPC运输层运输层SCTPTCPUDP网络层网络层ICMPIGMPIPRARPARP数据链路层数据链路层物理层物理层由底层网络定义的协议由底层网络定义的协议1.2.3 TCP/IP协议族协议族现在学习的是第12页,共49页1.2 TCP/IP简介 应用层协议:应用层协议:应用层协议:应用层协议:DNSDNS:域名系统。它是用分布式数据库实现的命名系统。域名系统。它是用分布式数据库实现的命名系统。域名系统。它是用分布式数据库实现的命名系统。域名系统
13、。它是用分布式数据库实现的命名系统。NFSNFS:网络文件系统。在不同的系统间达到文件共享的系统。网络文件系统。在不同的系统间达到文件共享的系统。网络文件系统。在不同的系统间达到文件共享的系统。网络文件系统。在不同的系统间达到文件共享的系统。SNMPSNMP:简单网络管理协议。简单网络管理协议。简单网络管理协议。简单网络管理协议。FTPFTP:文件传输协议。文件传输协议。文件传输协议。文件传输协议。TFTPTFTP:简单文件传输协议。简单文件传输协议。简单文件传输协议。简单文件传输协议。POPPOP:邮局协议。邮局协议。邮局协议。邮局协议。SMTPSMTP:简单邮局传输协议。它只是完成通过一条
14、链路传递消简单邮局传输协议。它只是完成通过一条链路传递消简单邮局传输协议。它只是完成通过一条链路传递消简单邮局传输协议。它只是完成通过一条链路传递消息的工作。息的工作。息的工作。息的工作。TelnetTelnet:远程登录协议远程登录协议远程登录协议远程登录协议 现在学习的是第13页,共49页1.2 TCP/IP简介传输层协议:传输层协议:TCP:传输控制协议。它是面向连接的全双传输控制协议。它是面向连接的全双工协议工协议 UDP:用户数据报协议。提供非可靠数据报用户数据报协议。提供非可靠数据报服务的无连接协议。服务的无连接协议。SCTP:流控制传输协议。它是一个把流控制传输协议。它是一个把U
15、DP和和TCP的优点合并起来的传输层协议。提供的优点合并起来的传输层协议。提供对新的应用(如对新的应用(如IP电话)的支持电话)的支持现在学习的是第14页,共49页1.2 TCP/IP简介网络层协议:网络层协议:IP:网际互连协议。它是无连接的,负责数网际互连协议。它是无连接的,负责数据包的发送。据包的发送。ARP:地址解析协议地址解析协议 RARP:逆地址解析协议逆地址解析协议 ICMP:网际控制报文协议网际控制报文协议 IGMP:网际组管理协议网际组管理协议现在学习的是第15页,共49页1.2 TCP/IP简介网络接口层(物理层和数据链路层)协议:网络接口层(物理层和数据链路层)协议:在网
16、络接口层,在网络接口层,TCP/IP并没有定义任何并没有定义任何特定的协议。它支持所有标准的和专用的协特定的协议。它支持所有标准的和专用的协议。在议。在TCP/IP互联网中的网络可以是局域网互联网中的网络可以是局域网(LAN)、)、城域网(城域网(MAN)或广域网或广域网(WAN)。)。现在学习的是第16页,共49页1.3 网络编程接口 完整的计算机网络系统中,仅提供完整的计算机网络系统中,仅提供了基于网络操作系统之上的编程接口了基于网络操作系统之上的编程接口 Windows的的Winsock API Netware的的IPX/SPX API NetBIOS API现在学习的是第17页,共49
17、页 网络编程接口定义了应用程序与网络通信协议的连接:应用网络编程接口定义了应用程序与网络通信协议的连接:应用网络编程接口定义了应用程序与网络通信协议的连接:应用网络编程接口定义了应用程序与网络通信协议的连接:应用程序调用网络编程接口实现应用程序相互之间的通信,而网程序调用网络编程接口实现应用程序相互之间的通信,而网程序调用网络编程接口实现应用程序相互之间的通信,而网程序调用网络编程接口实现应用程序相互之间的通信,而网络编程接口则利用下层的网络通信协议功能与操作系统调用络编程接口则利用下层的网络通信协议功能与操作系统调用络编程接口则利用下层的网络通信协议功能与操作系统调用络编程接口则利用下层的网
18、络通信协议功能与操作系统调用实现实际的通信工作。它们之间的关系如图:实现实际的通信工作。它们之间的关系如图:实现实际的通信工作。它们之间的关系如图:实现实际的通信工作。它们之间的关系如图:应用程序应用程序A A应用程序应用程序B B网络编程接口,例如网络编程接口,例如Windows SocketsWindows Sockets网络通信协议服务界面,例如网络通信协议服务界面,例如TCP/IPTCP/IP操作系统,例如操作系统,例如WindowsWindows物理通信介质物理通信介质现在学习的是第18页,共49页1.3 网络编程接口1.3.1 基于基于NetBIOS的网络编程的网络编程 NetBI
19、OS是一种标准的应用程序编程接口,是一种标准的应用程序编程接口,它为网络通信定义了一组编程接口。它为网络通信定义了一组编程接口。NetBIOS与与TCP/IP和和IPX/SPX相比,具有极相比,具有极高的通信效率。高的通信效率。NetBIOS支持面向连接和无连接服务。支持面向连接和无连接服务。NetBIOS编程接口对应于编程接口对应于OSI模型的会话层模型的会话层和传输层。和传输层。NetBIOS不是一种不是一种“可路由可路由”协议。协议。现在学习的是第19页,共49页1.3 网络编程接口1.3.2 基于基于Winsock的网络编程的网络编程 Winsock是是Windows环境下实现基于环境
20、下实现基于TCP/IP协议的网络编程的接口。协议的网络编程的接口。Winsock规范并定义了如何使用规范并定义了如何使用API和和Internet协议簇,并提供了一组针对协议簇,并提供了一组针对Windows的扩展库函数,以使程序员能充分的扩展库函数,以使程序员能充分的利用的利用Windows消息驱动机制进行编程。消息驱动机制进行编程。所有的所有的Winsock实现都支持流套接字和数据实现都支持流套接字和数据报套接字报套接字现在学习的是第20页,共49页1.3 网络编程接口1.3.3 直接网络编程直接网络编程 直接网络编程接口提供在链路层或网络层的直接网络编程接口提供在链路层或网络层的编程方法
21、。编程方法。直接网络编程方法:直接网络编程方法:l lWinpcapWinpcap的网络数据包捕获技术的网络数据包捕获技术的网络数据包捕获技术的网络数据包捕获技术l lLibnetLibnet的网络数据包的构造技术的网络数据包的构造技术的网络数据包的构造技术的网络数据包的构造技术l l原始套接字原始套接字原始套接字原始套接字现在学习的是第21页,共49页1.3 网络编程接口1.3.4 基于物理设备的网络编程基于物理设备的网络编程 基于物理设备的网络编程接口也称为基于物理设备的网络编程接口也称为MAC层编程接口层编程接口 这一接口没有提供现成的程序接口,因此所这一接口没有提供现成的程序接口,因此
22、所有功能的实现都必须自行设计有功能的实现都必须自行设计现在学习的是第22页,共49页1.4 网络通信方式1.4.1 面向连接的通信和无连接通信面向连接的通信和无连接通信 通常情况下,一个协议提供面向连接(会话)和通常情况下,一个协议提供面向连接(会话)和通常情况下,一个协议提供面向连接(会话)和通常情况下,一个协议提供面向连接(会话)和无连接(数据报)的服务。无连接(数据报)的服务。无连接(数据报)的服务。无连接(数据报)的服务。(1 1)面向连接(双向连接)的服务:在这种服务中,通信双)面向连接(双向连接)的服务:在这种服务中,通信双)面向连接(双向连接)的服务:在这种服务中,通信双)面向连
23、接(双向连接)的服务:在这种服务中,通信双方进行数据交换之前,必须建立一条路径,这样既确定了方进行数据交换之前,必须建立一条路径,这样既确定了方进行数据交换之前,必须建立一条路径,这样既确定了方进行数据交换之前,必须建立一条路径,这样既确定了通信方之间存在路由,又保证了通信双方都是活动的、都通信方之间存在路由,又保证了通信双方都是活动的、都通信方之间存在路由,又保证了通信双方都是活动的、都通信方之间存在路由,又保证了通信双方都是活动的、都可彼此相应、并且传送数据时是按序传送的,从而保证数可彼此相应、并且传送数据时是按序传送的,从而保证数可彼此相应、并且传送数据时是按序传送的,从而保证数可彼此相
24、应、并且传送数据时是按序传送的,从而保证数据通信的可靠性。据通信的可靠性。据通信的可靠性。据通信的可靠性。适合于在一段时间间隔内要向同一目的地发送许多报文适合于在一段时间间隔内要向同一目的地发送许多报文适合于在一段时间间隔内要向同一目的地发送许多报文适合于在一段时间间隔内要向同一目的地发送许多报文的情况。的情况。的情况。的情况。缺点是开销大。缺点是开销大。缺点是开销大。缺点是开销大。现在学习的是第23页,共49页1.4 网络通信方式(2 2)无连接服务:发送方发送数据前不需要确认接收端)无连接服务:发送方发送数据前不需要确认接收端)无连接服务:发送方发送数据前不需要确认接收端)无连接服务:发送
25、方发送数据前不需要确认接收端是否正在收听,发送方随时可以发送数据。是否正在收听,发送方随时可以发送数据。是否正在收听,发送方随时可以发送数据。是否正在收听,发送方随时可以发送数据。无连接服务的特点是速度快、使用灵活、既能实现点到无连接服务的特点是速度快、使用灵活、既能实现点到无连接服务的特点是速度快、使用灵活、既能实现点到无连接服务的特点是速度快、使用灵活、既能实现点到点通信,又能实现多点和广播通信。点通信,又能实现多点和广播通信。点通信,又能实现多点和广播通信。点通信,又能实现多点和广播通信。无连接服务的缺点是不能保证数据可靠到达接收端,无连接服务的缺点是不能保证数据可靠到达接收端,无连接服
26、务的缺点是不能保证数据可靠到达接收端,无连接服务的缺点是不能保证数据可靠到达接收端,也无法保证数据的完整性,这些问题必须由应用程序根也无法保证数据的完整性,这些问题必须由应用程序根也无法保证数据的完整性,这些问题必须由应用程序根也无法保证数据的完整性,这些问题必须由应用程序根据需要自行解决。据需要自行解决。据需要自行解决。据需要自行解决。无连接服务特别适合于传送少量零星的报文。无连接服务特别适合于传送少量零星的报文。无连接服务特别适合于传送少量零星的报文。无连接服务特别适合于传送少量零星的报文。现在学习的是第24页,共49页1.4 网络通信方式1.4.2 阻塞通信和非阻塞通信阻塞通信和非阻塞通
27、信 在网络编程时,选择通信模式是一件很重要在网络编程时,选择通信模式是一件很重要的事情。通信模式分的事情。通信模式分阻塞和非阻塞阻塞和非阻塞模式。模式。在不同情况下,阻塞通信和非阻塞通信有不在不同情况下,阻塞通信和非阻塞通信有不同的表现。同的表现。(1 1)应用程序发送和接收数据报文时)应用程序发送和接收数据报文时)应用程序发送和接收数据报文时)应用程序发送和接收数据报文时 (2 2)面向连接协议的连接建立阶段)面向连接协议的连接建立阶段)面向连接协议的连接建立阶段)面向连接协议的连接建立阶段现在学习的是第25页,共49页1.4 网络通信方式 通信模式对应用程序的设计方法也有直接的影响。通信模
28、式对应用程序的设计方法也有直接的影响。l l在非阻塞模式下,应用程序不断地轮询查看是否有数在非阻塞模式下,应用程序不断地轮询查看是否有数在非阻塞模式下,应用程序不断地轮询查看是否有数在非阻塞模式下,应用程序不断地轮询查看是否有数据达到或有连接请求到达。这种轮询要耗费大量的据达到或有连接请求到达。这种轮询要耗费大量的据达到或有连接请求到达。这种轮询要耗费大量的据达到或有连接请求到达。这种轮询要耗费大量的CPUCPU时间,因此要尽量避免使用。时间,因此要尽量避免使用。时间,因此要尽量避免使用。时间,因此要尽量避免使用。l l阻塞模式的缺点是进程或线程在执行阻塞模式的缺点是进程或线程在执行阻塞模式的
29、缺点是进程或线程在执行阻塞模式的缺点是进程或线程在执行I/OI/O操作时将被阻操作时将被阻操作时将被阻操作时将被阻塞而不能执行其他的工作,因此在单进程或单线程应塞而不能执行其他的工作,因此在单进程或单线程应塞而不能执行其他的工作,因此在单进程或单线程应塞而不能执行其他的工作,因此在单进程或单线程应用中不能使用这种模式。在多线程应用中比较适合采用中不能使用这种模式。在多线程应用中比较适合采用中不能使用这种模式。在多线程应用中比较适合采用中不能使用这种模式。在多线程应用中比较适合采用阻塞模式,一个线程阻塞不影响其他线程的工作。用阻塞模式,一个线程阻塞不影响其他线程的工作。用阻塞模式,一个线程阻塞不
30、影响其他线程的工作。用阻塞模式,一个线程阻塞不影响其他线程的工作。现在学习的是第26页,共49页1.4 网络通信方式1.4.3 多播通信与广播通信多播通信与广播通信 无论是多播还是广播,都是建立在无连接服务无论是多播还是广播,都是建立在无连接服务协议之上,因此数据传输的可靠性无法得到保证。协议之上,因此数据传输的可靠性无法得到保证。广播通信是指数据从一个工作站发出,局域网内的其他所广播通信是指数据从一个工作站发出,局域网内的其他所广播通信是指数据从一个工作站发出,局域网内的其他所广播通信是指数据从一个工作站发出,局域网内的其他所有工作站都能接收到它。有工作站都能接收到它。有工作站都能接收到它。
31、有工作站都能接收到它。多播通信是指数据从一个工作站发出,这些数据将由一多播通信是指数据从一个工作站发出,这些数据将由一多播通信是指数据从一个工作站发出,这些数据将由一多播通信是指数据从一个工作站发出,这些数据将由一个或多个接收端进行接收。个或多个接收端进行接收。个或多个接收端进行接收。个或多个接收端进行接收。现在学习的是第27页,共49页思考题1 常见的网络编程接口有哪几种?它与网络通常见的网络编程接口有哪几种?它与网络通信协议之间存在何种关系?信协议之间存在何种关系?三大编程接口:三大编程接口:三大编程接口:三大编程接口:NetBIOS APINetBIOS API、Socket API S
32、ocket API、IPX/SPX IPX/SPX APIAPI LAN LAN三大协议:三大协议:NetBIOS NetBIOS、TCP/IP TCP/IP、IPX/SPX IPX/SPX 网络编程接口访问网络协议所提供的服务实现网络编程接口访问网络协议所提供的服务实现网络通信,不同的网络协议可能提供不同的服务访网络通信,不同的网络协议可能提供不同的服务访问接口,同一网络编程接口可能提供访问不同网络问接口,同一网络编程接口可能提供访问不同网络协议的接口。协议的接口。现在学习的是第28页,共49页2 面向连接与无连接通信的特点及各自适用的场面向连接与无连接通信的特点及各自适用的场合。合。面向连
33、接通信中,通信双方进行数据交换之前,必须面向连接通信中,通信双方进行数据交换之前,必须面向连接通信中,通信双方进行数据交换之前,必须面向连接通信中,通信双方进行数据交换之前,必须建立一条路径,这样既确定了通信方之间存在路由,又保建立一条路径,这样既确定了通信方之间存在路由,又保建立一条路径,这样既确定了通信方之间存在路由,又保建立一条路径,这样既确定了通信方之间存在路由,又保证了通信双方都是活动的、都可彼此相应、并且传送数据证了通信双方都是活动的、都可彼此相应、并且传送数据证了通信双方都是活动的、都可彼此相应、并且传送数据证了通信双方都是活动的、都可彼此相应、并且传送数据时是按序传送的,从而保
34、证数据通信的可靠性。适合于在一段时间时是按序传送的,从而保证数据通信的可靠性。适合于在一段时间时是按序传送的,从而保证数据通信的可靠性。适合于在一段时间时是按序传送的,从而保证数据通信的可靠性。适合于在一段时间间隔内要向同一目的地发送许多报文的情况。间隔内要向同一目的地发送许多报文的情况。间隔内要向同一目的地发送许多报文的情况。间隔内要向同一目的地发送许多报文的情况。无连接通信,发送方发送数据前不需要确认接收端是无连接通信,发送方发送数据前不需要确认接收端是无连接通信,发送方发送数据前不需要确认接收端是无连接通信,发送方发送数据前不需要确认接收端是否正在收听,发送方随时可以发送数据。不能保证数
35、据可靠否正在收听,发送方随时可以发送数据。不能保证数据可靠否正在收听,发送方随时可以发送数据。不能保证数据可靠否正在收听,发送方随时可以发送数据。不能保证数据可靠到达接收端,但通信效率高。到达接收端,但通信效率高。到达接收端,但通信效率高。到达接收端,但通信效率高。适合于传送少量零星的报文。适合于传送少量零星的报文。适合于传送少量零星的报文。适合于传送少量零星的报文。现在学习的是第29页,共49页 Windows Windows应用程序与操作系统、计算机硬件之应用程序与操作系统、计算机硬件之间的相互关系间的相互关系:1.5 Windows程序的运行原理现在学习的是第30页,共49页 图中,箭头
36、图中,箭头图中,箭头图中,箭头表示应用程序可以通知操作系统执行某个表示应用程序可以通知操作系统执行某个表示应用程序可以通知操作系统执行某个表示应用程序可以通知操作系统执行某个具体的动作,如操作系统能够控制声卡发出声音,但它并不具体的动作,如操作系统能够控制声卡发出声音,但它并不具体的动作,如操作系统能够控制声卡发出声音,但它并不具体的动作,如操作系统能够控制声卡发出声音,但它并不知道应该何时发出何种声音,需要应用程序告诉操作系统该知道应该何时发出何种声音,需要应用程序告诉操作系统该知道应该何时发出何种声音,需要应用程序告诉操作系统该知道应该何时发出何种声音,需要应用程序告诉操作系统该发出什么样
37、的声音。这个关系好比有个机器人能够完成行走发出什么样的声音。这个关系好比有个机器人能够完成行走发出什么样的声音。这个关系好比有个机器人能够完成行走发出什么样的声音。这个关系好比有个机器人能够完成行走的功能,但是,如果人们不告诉它往哪个方向上走,机器人的功能,但是,如果人们不告诉它往哪个方向上走,机器人的功能,但是,如果人们不告诉它往哪个方向上走,机器人的功能,但是,如果人们不告诉它往哪个方向上走,机器人是不会主动行走的。这里的机器人就是操作系统,人们就是是不会主动行走的。这里的机器人就是操作系统,人们就是是不会主动行走的。这里的机器人就是操作系统,人们就是是不会主动行走的。这里的机器人就是操作
38、系统,人们就是应用程序。应用程序。应用程序。应用程序。那么,应用程序如何告诉操作系统执行什么动作呢?那么,应用程序如何告诉操作系统执行什么动作呢?那么,应用程序如何告诉操作系统执行什么动作呢?那么,应用程序如何告诉操作系统执行什么动作呢?事实上,操作系统把它所能够完成的功能以函数的事实上,操作系统把它所能够完成的功能以函数的事实上,操作系统把它所能够完成的功能以函数的事实上,操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,而应用程序就是通过对函数形式提供给应用程序使用,而应用程序就是通过对函数形式提供给应用程序使用,而应用程序就是通过对函数形式提供给应用程序使用,而应用程序就是通过
39、对函数的调用来通知操作系统执行某个功能的。的调用来通知操作系统执行某个功能的。的调用来通知操作系统执行某个功能的。的调用来通知操作系统执行某个功能的。现在学习的是第31页,共49页 箭头箭头箭头箭头表示操作系统能够将输入设备的变化上传给应用程表示操作系统能够将输入设备的变化上传给应用程表示操作系统能够将输入设备的变化上传给应用程表示操作系统能够将输入设备的变化上传给应用程序。如用户在某个程序活动时按了一下键盘,操作系统马上序。如用户在某个程序活动时按了一下键盘,操作系统马上序。如用户在某个程序活动时按了一下键盘,操作系统马上序。如用户在某个程序活动时按了一下键盘,操作系统马上能够感知到这一事件
40、,并且能够知道用户按的是哪一个键,能够感知到这一事件,并且能够知道用户按的是哪一个键,能够感知到这一事件,并且能够知道用户按的是哪一个键,能够感知到这一事件,并且能够知道用户按的是哪一个键,操作系统并不决定对这一事件如何作出反应,而是将这一事操作系统并不决定对这一事件如何作出反应,而是将这一事操作系统并不决定对这一事件如何作出反应,而是将这一事操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反件转交给应用程序,由应用程序决定如何对这一事件作出反件转交给应用程序,由应用程序决定如何对这一事件作出反件转交给应用程序,由应用程序决定如何对这一事件
41、作出反应。好比有个蚊子叮了我们一口,我们的神经末梢(相当于应。好比有个蚊子叮了我们一口,我们的神经末梢(相当于应。好比有个蚊子叮了我们一口,我们的神经末梢(相当于应。好比有个蚊子叮了我们一口,我们的神经末梢(相当于操作系统)马上感知到这一事件,并传递给了我们的大脑操作系统)马上感知到这一事件,并传递给了我们的大脑操作系统)马上感知到这一事件,并传递给了我们的大脑操作系统)马上感知到这一事件,并传递给了我们的大脑(相当于应用程序),我们的大脑最终决定如何对这一事件(相当于应用程序),我们的大脑最终决定如何对这一事件(相当于应用程序),我们的大脑最终决定如何对这一事件(相当于应用程序),我们的大脑
42、最终决定如何对这一事件作出反应,如将蚊子赶走,或是将蚊子拍死。对事件作出反作出反应,如将蚊子赶走,或是将蚊子拍死。对事件作出反作出反应,如将蚊子赶走,或是将蚊子拍死。对事件作出反作出反应,如将蚊子赶走,或是将蚊子拍死。对事件作出反应的过程就是消息响应。应的过程就是消息响应。应的过程就是消息响应。应的过程就是消息响应。那么,操作系统是怎样将感知到的事件传递给应用程序那么,操作系统是怎样将感知到的事件传递给应用程序那么,操作系统是怎样将感知到的事件传递给应用程序那么,操作系统是怎样将感知到的事件传递给应用程序的呢?的呢?的呢?的呢?这是通过这是通过这是通过这是通过windowswindows的消息
43、驱动机制的消息驱动机制的消息驱动机制的消息驱动机制(Message)Message)来实现的。来实现的。来实现的。来实现的。现在学习的是第32页,共49页 Windows Windows系统的运行机制被称作消息驱动机制,系统的运行机制被称作消息驱动机制,其工作原理如下:其工作原理如下:消息是一个基本而重要的概念,它是指一个报告有关事消息是一个基本而重要的概念,它是指一个报告有关事消息是一个基本而重要的概念,它是指一个报告有关事消息是一个基本而重要的概念,它是指一个报告有关事件发生的通知。从编程角度来看,一条消息可被视为某件发生的通知。从编程角度来看,一条消息可被视为某件发生的通知。从编程角度来
44、看,一条消息可被视为某件发生的通知。从编程角度来看,一条消息可被视为某一事件的发生,如按下或移动鼠标、按键盘等。当某个一事件的发生,如按下或移动鼠标、按键盘等。当某个一事件的发生,如按下或移动鼠标、按键盘等。当某个一事件的发生,如按下或移动鼠标、按键盘等。当某个事件产生后,由事件产生后,由事件产生后,由事件产生后,由windowswindows操作系统进行分析与之相关的操作系统进行分析与之相关的操作系统进行分析与之相关的操作系统进行分析与之相关的应用程序,然后将该事件包装成一个消息发送给对应的应用程序,然后将该事件包装成一个消息发送给对应的应用程序,然后将该事件包装成一个消息发送给对应的应用程
45、序,然后将该事件包装成一个消息发送给对应的应用程序。应用程序。应用程序。应用程序。WindowsWindows为每个正在运行的应用程序都建立一个消息队列,应为每个正在运行的应用程序都建立一个消息队列,应为每个正在运行的应用程序都建立一个消息队列,应为每个正在运行的应用程序都建立一个消息队列,应用程序时刻等待着消息的到来,一旦发现它的消息队列中有未用程序时刻等待着消息的到来,一旦发现它的消息队列中有未用程序时刻等待着消息的到来,一旦发现它的消息队列中有未用程序时刻等待着消息的到来,一旦发现它的消息队列中有未处理的消息,就获取并分析该消息,并根据消息内容采用适当处理的消息,就获取并分析该消息,并根
46、据消息内容采用适当处理的消息,就获取并分析该消息,并根据消息内容采用适当处理的消息,就获取并分析该消息,并根据消息内容采用适当的动作来响应用户的操作。所以,应用程序需要不停从特定的的动作来响应用户的操作。所以,应用程序需要不停从特定的的动作来响应用户的操作。所以,应用程序需要不停从特定的的动作来响应用户的操作。所以,应用程序需要不停从特定的消息队列中获取消息、分析消息并处理消息,直到收到一条叫消息队列中获取消息、分析消息并处理消息,直到收到一条叫消息队列中获取消息、分析消息并处理消息,直到收到一条叫消息队列中获取消息、分析消息并处理消息,直到收到一条叫做做做做WM_QUITWM_QUIT的消息
47、为止。的消息为止。的消息为止。的消息为止。现在学习的是第33页,共49页Windows应用程序的消息Message的结构的结构 MSGMSG结构定义如下:结构定义如下:结构定义如下:结构定义如下:typedef struct tagMSG typedef struct tagMSG HWND hwnd;HWND hwnd;/消息所属的窗口消息所属的窗口消息所属的窗口消息所属的窗口 UINT message;/UINT message;/消息标识符(标识类别)消息标识符(标识类别)消息标识符(标识类别)消息标识符(标识类别)WPARAM wParam;/WPARAM wParam;/消息的附加信
48、息消息的附加信息消息的附加信息消息的附加信息 LPARAM lParam;/LPARAM lParam;/消息的附加信息消息的附加信息消息的附加信息消息的附加信息 DWORD time;/DWORD time;/消息投递到消息队列的时间消息投递到消息队列的时间消息投递到消息队列的时间消息投递到消息队列的时间 POINT pt;/POINT pt;/消息发生时鼠标在窗口中消息发生时鼠标在窗口中消息发生时鼠标在窗口中消息发生时鼠标在窗口中 MSG;MSG;的坐标位置的坐标位置的坐标位置的坐标位置 现在学习的是第34页,共49页Windows应用程序的消息vvWindows应用程序的消息来源应用程序
49、的消息来源 输入消息输入消息输入消息输入消息l l包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后WindowsWindows将它们送入应用程序消息队列,最后再由应用程序处理。将它们送入应用程序消息队列,最后再由应用程序处理。将它们送入应用程序消息队列,最后再由应用程序处理。将它们送入应用程序消息队列,最后再由应用程序处理。控制消息控制消息控制消息控制消息l l用来与用来与用来与用来与WindowsWin
50、dows的控制对象进行双向通信。这类消息一般不经的控制对象进行双向通信。这类消息一般不经的控制对象进行双向通信。这类消息一般不经的控制对象进行双向通信。这类消息一般不经过应用程序消息队列,而是直接发送到控制对象上去。过应用程序消息队列,而是直接发送到控制对象上去。过应用程序消息队列,而是直接发送到控制对象上去。过应用程序消息队列,而是直接发送到控制对象上去。系统消息系统消息系统消息系统消息:对程序化的事件或系统时钟中断作出反应。对程序化的事件或系统时钟中断作出反应。对程序化的事件或系统时钟中断作出反应。对程序化的事件或系统时钟中断作出反应。用户消息用户消息用户消息用户消息:程序员自己定义并在应