Windows+网络编程技术(五)Windows_网络编程技术(五)_.pdf

Windows+网络编程技术(五)Windows_网络编程技术(五)_.pdf

ID:52242186

大小:459.58 KB

页数:13页

时间:2020-03-25

Windows+网络编程技术(五)Windows_网络编程技术(五)_.pdf_第1页
Windows+网络编程技术(五)Windows_网络编程技术(五)_.pdf_第2页
Windows+网络编程技术(五)Windows_网络编程技术(五)_.pdf_第3页
Windows+网络编程技术(五)Windows_网络编程技术(五)_.pdf_第4页
Windows+网络编程技术(五)Windows_网络编程技术(五)_.pdf_第5页
资源描述:

《Windows+网络编程技术(五)Windows_网络编程技术(五)_.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、下载第二部分WinsockAPI本书第二部分讲述的是在Win32平台上的Winsock编程。对于众多的基层网络协议,Winsock是访问它们的首选接口。而且在每个Win32平台上,Winsock都以不同的形式存在着。Winsock是网络编程接口,而不是协议。它从Unix平台的Berkeley(BSD)套接字方案借鉴了许多东西,后者能访问多种网络协议。在Win32环境中,Winsock接口最终成为一个真正的“与协议无关”接口,尤其是在Winsock2发布之后。接下来的三章讲解了协议和Winsock的基本知识,其中包括每种协议的定址方案,

2、以及一个简单的Winsock客户机/服务器示例。再后面的几章讲述的是Winsock2中的一些新特性,比如传送服务提供者、命名空间提供者和服务质量(QoS)等等。就其中的一部分技术来说,可能会存在一些容易混淆的地方。原因是尽管它们都在Winsock2规范中得到了定义,而Winsock2在目前所有的Win32平台上都已得到支持(WindowsCE除外,本部分还会对其详述),但落实到具体的平台,却并非所有这些特性都已真正地实现。必要时,我们会指出具体的限制在哪里。本部分开始之前,我们假定大家已具备了Winsock(或BSD套接字)的基本知识

3、,而且多少熟悉一些客户机/服务器的Winsock基本知识。第5章网络原理和协议建立Winsock2规范的主要目的是提供一个与协议无关的传送接口。在各种不同的网络传送协议上,假若能为网络编程提供一个大家都很熟悉的接口,当然是一件不错的事情。但尽管如此,仍需注意各种网络协议的一些特征。本章将全面讲述使用特定协议时应该留意的一些特征,其中包括一些基本的网络连接原理。另外,我们还将讨论如何通过程序向Winsock查询协议信息,并探讨针对一种具体协议创建套接字所需的基本步骤。5.1协议的特征本章第一小节着重讲解目前常用网络传送协议的一些基本特征

4、。通过这里的学习,大家可掌握与协议行为类型有关的一些背景知识。同时,作为程序员,可大致知道特定协议在程序中的行为方式。5.1.1面向消息对每个离散写命令来说,如果传送协议把它们(而且只有它们)当做一条独立的消息在网上传送,我们就说该协议是面向协议的。同时,还意味着接收端在接收数据时,返回的数据是发送端写入的一条离散消息。接收端不能得到更多的消息,仅此而已。比如,在图5-1中,左边的工作站向右边的工作站提交了三条分别是128、64和32字节的消息。作为接收端的工作站发出三条读取命令,缓冲区是256个字节。后来的各次调用返回的分别是128

5、、64和32个字90计计第二部分附WinsockAPI下载节。第一次读取调用不会将这所有的三个数据包都返回,即使这些数据包已经收到也如此。这称为“保护消息边界”(preservingmessageboundaries),一般出现在交换结构化数据时。网络游戏是“保护消息边界”的较好范例。每个玩家均向别的玩家发出一个带有地图信息的数据包。这种通信后面的代码很简单:一个玩家请求一个数据包,另一个玩家又准确地从别的玩家处获得一个地图信息数据包。网络堆栈网络堆栈32个字节128个字节Win32平台Win32平台64个字节64个字节128个字节3

6、2个字节网络图5-1数据报服务无保护消息边界的协议通常称作“基于流的协议”。大家要知道“基于流的协议”这一术语常用来指代附加特性。流服务的定义是连续的数据传输;不管消息边界是否存在,接收端都会尽量地读取有效数据。对发送端来说,意味着允许系统将原始消息分解成小消息或把几条消息积累在一起,形成一个较大的数据包。对接收端来说,则是数据一到达网络堆栈,网络堆栈就开始读取它,并将它缓存下来等候进程处理。在进程请求处理大量数据时,系统会在不溢出为客户请求提供的缓冲区这一前提下,尽量返回更多的数据。在图5-2中,发送端提交了三个数据包:分别是128

7、、64和32个字节;但是,本地系统堆栈自由地把这些数据聚合在一起,形成一个大的数据包。这种情况下,重组后的2个数据包就会一起传输。是否将各个独立的数据包累积在一起受许多因素的影响,比如最大传输单元或Nagle算法。在TCP/IP中,在将积累起来的数据发到线上之前,Nagle算法在等候数据积累的主机中进行。在需要发送的数据积累到一定数量或预定时间已超过之前,这个主机会一直等下去。实施Nagle算法时,主机的通信方在发送主机确认之前,会等一等外出数据,主机的通信方就不必发送一个只有确认的数据包。发送小数据包不仅没有多少意义,而且还会徒增错

8、误检查和确认,相当烦人。在接收端,网络堆栈把所有进来的数据包聚集在一起,归入既定进程。我们来看看图5-2。如果接收端执行一次256字节缓冲区的读取,系统马上就会返回224个字节。如果接收端只要求读取20个字节,系统就会只

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。