《的扩展特性》PPT课件

《的扩展特性》PPT课件

ID:39642406

大小:228.26 KB

页数:34页

时间:2019-07-08

《的扩展特性》PPT课件_第1页
《的扩展特性》PPT课件_第2页
《的扩展特性》PPT课件_第3页
《的扩展特性》PPT课件_第4页
《的扩展特性》PPT课件_第5页
资源描述:

《《的扩展特性》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章WindowsSockets2的扩展特性WindowsSockets2概述Windowssockets2是从Windowssockets1.1发展而来的,它主要是为了适应近年来网络技术的迅猛发展,特别是多媒体网络技术的迅速发展的需要,通过制定WindowsSockets2规范来提供一个与协议无关的、具有紧急网络传输能力的网络传输接口。windowssockets2实际上是windowssockets1.1接口的一个超集,它在保持和windowssockets1.1完全向后兼容能力的同时,并扩展了windowssockets接口。Winsock2同时使用多个传输协议与windowss

2、ockets1.1应用程序的向后兼容性源码的兼容性#include#pragmacomment(lib,”ws2_32”)二进制的兼容性重叠I/OWindowsSockets2引入了重叠I/O的概念并且要求所有的传输协议提供者都支持这一功能。重叠I/O仅能在由WSASocket()函数打开的插口上使用(使用WSA_FLAG_OVERLAPPED标记)。这种方式的使用将采用Win32建立的模型。对于接收,应用程序使用WSARecv()函数或WSARecvFrom()函数来提供存放接收数据的缓冲区。如果数据在网络接收以前,应用程序已经提供了一个或多个数据缓冲区,那么接

3、收的数据就可以立即被存放进用户缓冲区。这样可以省去使用recv()函数和recvfrom()函数时需要进行的拷贝工作。如果在应用程序提供数据缓冲区时已经有数据到来,那么接收的数据将被立即拷贝进用户缓冲区。如果数据到来时,应用程序没有提供接收缓冲区,那么网络将回到我们熟悉的同步操作方式-传送来的数据将被存放进内部缓冲区,直到应用程序发出了接收调用并且提供了接收缓冲区,这时接收的数据就被拷贝进接收缓冲区。这种做法会有一个例外:就是当应用程序使用setsockopt()函数把接收缓冲区长度置为了0。在这种情况下,对于可靠传输协议,只有在应用程序提供了接收数据缓冲区后,数据才会被接收;而对于不可

4、靠传输协议,数据将会丢失。对于发送的一方,应用程序使用WSASend()函数或WSASendTo()函数提供一个指向已填充了数据的缓冲区的指针。应用程序不应在网络使用完该缓冲区的数据以前以任何方式破坏该缓冲区的数据。重叠发送和接收调用会立即返回。如果返回值是0,那么表明了I/O操作已经完成,对应的完成指示也已经可以得到。如果返回值是SOCKET_ERROR,并且错误代码是WSA_IO_PENDING,那么表明重叠操作已经被成功地初始化,今后发送缓冲区被用完或者接收缓冲区被填满时,将会有完成指示。任何其他的错误代码表明了初始化没有成功,今后也不会有什么完成指示。发送操作和接收操作都可以被重

5、叠使用。接收函数可以被多次调用,发出接收缓冲区,准备接收到来的数据。发送函数也可以被多次调用,组成一个发送缓冲区队列。要注意的是,应用程序可以通过按顺序提供发送缓冲区来确保一系列重叠发送操作的顺序,但是对应的完成指示有可能是按照另外的顺序排列的。同样的,在接收数据的一方,缓冲区是按照被提供的顺序填充的,但是完成指示也可能按照另外的顺序排列。重叠I/O涉及的一些函数WSACreateEvent:创建一个新的事件对象。WSAEVENTWSACreateEvent(void);返回值:如果函数成功,则返回值即是事件对象的句柄。如果函数失败,返回WSA_INVALID_EVENT。应用程序可通过

6、调用WSAGetLastError()函数获取进一步的错误信息。WSASetEvent:将指定的事件对象状态设置为有信号(signaled)。BOOLWSASetEvent(WSAEVENThEvent);WSAResetEvent:将指定的事件对象状态清除为未置信号(nonsignaled)。BOOLWSAResetEvent(WSAEVENThEvent);WSAOVERLAPPED结构体:它提供了重叠I/O操作的初始化和它后续完成过程之间的通信媒体。typedefstruct_WSAOVERLAPPED{DWORDInternal;DWORDInternalHigh;DWORDOf

7、fset;DWORDOffsetHigh;WSAEVENThEvent;}WSAOVERLAPPED,*LPWSAOVERLAPPED;WSAGetOverlappedResult:此函数返回指定插口上一个重叠操作的结果。BOOLWSAGetOverlappedResult(SOCKETs,LPWSAOVERLAPPEDlpOverlapped,LPDWORDlpcbTransfer,BOOLfWait,LPDWORDlpdwFla

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

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

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