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