版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络编程技术本讲要点:1.重叠I/O的概念2.网络通信的重叠I/O模型3.重叠I/O模型的编程框架5.2.3重叠I/O模型0102重叠I/O的概念网络通信的重叠I/O模型
目录/Contents03重叠I/O模型的编程框架1.重叠I/O的概念重叠I/O模型是以Windows重叠I/O机制为基础的套接字I/O模型。一种文件操作技术阻塞模式(传统文件操作)浪费时间程序性能下降读写函数其它函数其它函数应用程序调用当文件很大或磁盘读写速度较低时长时间阻塞1.重叠I/O的概念读写函数其它函数其它操作立即返回执行其它操作读写函数其它函数读写操作2读写操作1读写操作3系统同时执行多个文件的读写操作其它函数立即返回可执行其它操作其它函数重叠I/O模型是以Windows重叠I/O机制为基础的套接字I/O模型。一种文件操作技术1.重叠I/O的概念将Windows事件对象关联到重叠数据结构
WSAOVERLAPPED。typedefstruct_WSAOVERLAPPED{ULONG_PTRInteral;//底层操作系统使用ULONG_PTRInteralHigh;//底层操作系统使用union{struct{DWORDoffset;//套接字是忽略,//文件操作使用。DWORDoffsetHigh;//忽略};PVOIDPointer;//忽略};HANDLEhEvent;//关联一个事件对象句柄}WSAOVERLAPPED,*LPWSAOVERLAPPED;底层操作系统文件操作网络通信操作I/O重叠模型如何通知应用进程I/O操作已经完成?…socket…NetworkEvents…bSignaled…事件内核对象“受信”1.重叠I/O的概念WSAWaitForMultipleEvents()WSAGetOverlappedResult()等待I/O完成的通知信号调用查询查询I/O操作结果0102重叠I/O的概念网络通信的重叠I/O模型
目录/Contents03重叠I/O模型的编程框架2.网络通信的重叠I/O模型网络通信中的重叠I/O模型以重叠I/O机制为基础,让应用程序使用重叠数据结构(WSAOVERLAPPED),一次投递一个或多个WinsockI/O请求。WinSock扩展套接字函数函数作用WSASocket()创建套接字WSASend()发送数据WSASendTo()发送数据WSARecv()接收数据WSARecvFrom()接收数据WSAIoctl()控制套接字模式AcceptEx()接受连接2.网络通信的重叠I/O模型应用进程WSARecv()线程继续运行处理数据内核无数据准备好系统调用返回事件通知or完成例程重叠I/O模型下的数据接收数据准备好复制数据完成复制等待数据将数据复制到用户空间2.网络通信中的重叠I/O模型应用进程WSARecv()线程继续运行处理数据内核无数据准备好数据准备好复制数据完成复制等待数据将数据复制到用户空间系统调用返回事件通知(完成例程)重叠I/O模型下的数据接收select()select模型应用程序操作系统同步阻塞recv(send同理)操作系统把有信号的套接字装进fd_set分类处理同步阻塞处理数据数据复制进recv的buffer返回条件就绪套接字集合投递一组套接字WSAEventSelect()事件选择模型应用程序操作系统异步:继续做其他事recv(send同理)操作系统监视将事件置成有信号WSAWaitForMultipleEvents同步阻塞处理数据数据复制进recv的buffer询问将事件投递给系统WSAWaitForMultipleEvents事件是否有信号返回事件下标0102重叠I/O的概念网络通信的重叠I/O模型
目录/Contents03重叠I/O模型的编程框架3.重叠I/O模型的编程框架开始套接字初始化,连接初始化创建事件对象重叠结构初始化,关联事件对象WSARecv(),异步接收数据WSAWaitForMultipleEvents(),等待事件发生WSAGetOverlappedResult(),获取重叠结构接收结果判断成功处理请求结束处理错误调用一个WSASocket函数创建一个套接字,在套接字上使用重叠I/O模型,必须使用WSA_FLAG_OVERLAPPED标志设置为重叠I/O模式。其它参数的设置与含义与socket函数中的相同。SOCKETs=WSASocket(
AF_INET,
SOCK_STREAM,
IPPROTO_TCP,
NULL,
0,
WSA_FALG_OVERLAPPED);3.重叠I/O模型的编程框架开始套接字初始化,连接初始化创建事件对象重叠结构初始化,关联事件对象WSARecv(),异步接收数据WSAWaitForMultipleEvents(),等待事件发生WSAGetOverlappedResult(),获取重叠结构接收结果判断成功处理请求结束处理错误调用WSACreateEvent函数创建套接字网络I/O事件对应的事件对象,并初始化重叠结构,为套接字管理事件对象。WSAEVENTevent;//定义事件WSAOVERLAPPEDAcceptOverlapped;//定义重叠结构event=WSACreateEvent();//创建事件对象句柄ZeroMemory(&AcceptOverlapped,sizeof(WSAOVERLAPPED));//初始化重叠结构AcceptOverlapped.hEvent=event;3.重叠I/O模型的编程框架开始套接字初始化,连接初始化创建事件对象重叠结构初始化,关联事件对象WSARecv(),异步接收数据WSAWaitForMultipleEvents(),等待事件发生WSAGetOverlappedResult(),获取重叠结构接收结果判断成功处理请求结束处理错误3.再调用WSARecv函数接收数据intWSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORDlpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);3.重叠I/O模型的编程框架Typedefstruct_WSABUF{u_long len;//缓冲区长度charFAR *buf;//缓冲区指针}WSABUF,FAR*LPWSABUF;3.再调用WSARecv函数接收数据intWSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORDlpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);//刚才调用WSASocket创建的套接字//指向WSABUF结构数组的指针,用于接收数据。//WSABUF结构数组中成员数量//如果重叠操作立即完成,接收数据的字节数,否则不被更新//接收数据的方式,作用与recv函数中类似//指向与事件对象关联的重叠结构//指向一个完成例程。3.重叠I/O模型的编程框架开始套接字初始化,连接初始化创建事件对象重叠结构初始化,关联事件对象WSARecv(),异步接收数据WSAWaitForMultipleEvents(),等待事件发生WSAGetOverlappedResult(),获取重叠结构接收结果判断成功处理请求结束处理错误若WSARecv的参数lpCompletionR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年性格测试题题型及答案
- 2026年人事智力测试题及答案
- 2026年角部分的测试题及答案
- 2026年孩子财商测试题及答案
- 2026年足球规则理论测试题及答案
- 2026年会场体温测试题及答案
- 2026年企业综合基础测试题及答案
- 2025-2026学年园林散文教案
- 2026年卫星物联网通信水上乐园管理
- 第二节 乙烯与有机高分子材料教学设计高中化学人教版2019必修第二册-人教版2019
- 2026-2030中国文化旅游行业市场深度调研及战略规划与投资前景研究报告
- 新版电力重大事故隐患判定标准及治理监督管理规定解读
- 2025-2026学年鲁教版(新教材)小学信息技术五年级下册(全册)教学设计(附目录p112)
- 阿达木单抗在非银屑病炎症性皮肤病治疗中的应用专家共识解读
- 电仪修班组安全职责培训课件
- 代理记账公司内部复核制度
- 全球供应链的重构与韧性建设
- 磨床操作培训课件
- 面向对象程序设计实习报告
- 汽车电工电子技术PPT(高职)完整全套教学课件
- 人美版小学美术456年级教资面试试讲逐字稿试讲稿
评论
0/150
提交评论