




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第18章客户 服务器模型 18 1基本模型18 2WinsockI O模型 18 1基本模型 图18 1展示了最简单的客户 服务器模型 服务器从客户端接收请求 经过请求处理后向客户端返回应答 图18 1客户 服务器模型 18 1 1面向连接与无连接 TCP IP协议族为应用层服务提供了两种传输层服务 面向连接的TCP协议和无连接的UDP协议 UDP是一种非常简单的传输层协议 它并不能保证数据最终到达目的地 TCP提供可靠的传输服务 确认 超时和重传机制确保了应用层数据会被可靠地传送到目的地 同时TCP还提供流量控制 采用UDP还是采用TCP并没有一定的标准 通常只有在下面几种情况下采用UDP协议 1 C S之间的数据交互非常简单 如标准服务daytime和echo 2 与数据丢失相比 系统更不能容忍超时重传所带来的时间耗费 典型的应用是音视频系统 3 系统架构要求采用组播或者广播报文的方式 18 1 2并发和迭代 通常情况下 服务器需要同时向多个客户提供服务 而客户端通常只与一个服务器联系 一个常见的例外是WEB浏览器 我们把能同时接受多个客户连接的服务器称为并发服务器 ConcurrentServer 而把一次只能服务一个客户的称为迭代服务器 IterativeServer 迭代服务器通常用于提供一些简单的服务 如daytime echo等 对于复杂服务的提供来说 长时间地停顿在为一个客户的服务上而拒绝其他客户是不可取的 通常 迭代服务器都采用面向无连接的UDP协议 而并发服务器采用TCP协议 当然这也不是绝对的 在第20 21章将加以深入的讨论 18 2WinsockI O模型 18 2 1I O复用 selectselect函数定义如下 intselect intnfds fd setFAR readfds fd setFAR writefds fd setFAR exceptfds conststructtimevalFAR timeout 图18 2select的使用 18 2 1I O复用 select 图18 3select模型的应用过程 图18 3select模型的应用过程 18 2 2消息机制 WSAAsyncSelect WSAAsyncSelect提供了一种基于Windows消息机制的异步I O模型 使用该函数可以为特定套接口上特定网络事件的发生指定系统通知消息 函数定义如下 intWSAAsyncSelect SOCKETs HWNDhWnd unsignedintwMsg longlEvent 全部参数均为输入参数 18 2 3事件机制 WSAEventSelect WSAEventSelect与WSAAsyncSelect模型类似 同样是系统为套接口上的网络事件FD XXX向用户进程提供通知服务 当收到通知时 进程就可以进行相应的I O操作并立即返回得到结果 两者的差别是 对于前者 系统发送事件对象通知 Event Object 并且在内部的网络事件记录中加以记录 对于后者 系统向指定窗体发送用户定义的Windows消息 其函数定义如下 intWSAEventSelect SOCKETs WSAEVENThEventObject longlNetworkEvents 三个参数均为输入参数 其中第一个参数s是套接口描述字 第三个参数lNetworkEvents是我们感兴趣的套接口网络事件第二个参数hEventObject是一个Winsock的事件对象 18 2 4重叠I O模型 重叠 Overlapped I O是一种比较复杂的I O模型 与前三种模型都围绕某个特定函数相比 重叠I O涉及到很多套接口I O操作函数 几个相关的数据结构 1 typedefstruct WSABUF u longlen charFAR buf WSABUF FAR LPWSABUF 2 typedefstruct WSAOVERLAPPED DWORDInternal DWORDInternalHigh DWORDOffset DWORDOffsetHigh WSAEVENThEvent WSAOVERLAPPED LPWSAOVERLAPPED 18 2 4重叠I O模型 几个相关的数据结构 3 typedefvoid CALLBACK LPWSAOVERLAPPED COMPLETION ROUTINE DWORDdwError DWORDcbTransferred LPWSAOVERLAPPEDlpOverlapped DWORDdwFlags 18 2 4重叠I O模型18 2 4重叠I O模型 下面列出了四个Winsock2中的重叠I O操作函数的定义 1 intWSARecv SOCKETs LPWSABUFlpBuffers DWORDdwBufferCount LPDWORDlpNumberOfBytesRecvd LPDWORDlpFlags LPWSAOVERLAPPEDlpOverlapped LPWSAOVERLAPPED COMPLETION ROUTINElpCompletionRoutine 2 intWSASend SOCKETs LPWSABUFlpBuffers DWORDdwBufferCount LPDWORDlpNumberOfBytesSent DWORDdwFlags LPWSAOVERLAPPEDlpOverlapped LPWSAOVERLAPPED COMPLETION ROUTINElpCompletionRoutine 18 2 4重叠I O模型18 2 4重叠I O模型 3 intWSARecvFrom SOCKETs LPWSABUFlpBuffers DWORDdwBufferCount LPDWORDlpNumberOfBytesRecvd LPDWORDlpFlags structsockaddrFAR lpFrom LPINTlpFromlen LPWSAOVERLAPPEDlpOverlapped LPWSAOVERLAPPED COMPLETION ROUTINElpCompletionRoutine 4 intWSASendTo SOCKETs LPWSABUFlpBuffers DWORDdwBufferCount LPDWORDlpNumberOfBytesSent DWORDdwFlags conststructsockaddrFAR lpTo intiToLen LPWSAOVERLAPPEDlpOverlapped LPWSAOVERLAPPED COMPLETION ROUTINElpCompletionRoutine 18 2 5I O完成端口 IOCP IOCP涉及到三个基本函数 CreateIoCompletionPort GetQueuedCompletionStatus和PostQueuedCompletionStatus 第一个函数用于完成端口的创建和完成端口与套接口的绑定 第二个用于从完成队列中获取完成信息 最后一个用于模拟I O请求的完成 1 CreateIoCompletionPort函数定义如下 HANDLECreateIoCompletionPort HANDLEFileHandle handletofileHANDLEExistingCompletionPort handletoI OcompletionportULONG PTRCompletionKey completionkeyDWORDNumberOfConcurrentThreads numberofthreadstoexecute concurrently 18 2 5I O完成端口 IOCP 2 GetQueuedCompletionStatus函数定义如下 BOOLGetQueuedCompletionStatus HANDLECompletionPort handletocompletionportLPDWORDlpNumberOfBytes bytestransferredPULONG PTRlpCompletionKey filecompletionkeyLPOVERLAPPED lpOverlapped bufferDWORDdwMilliseconds optionaltimeoutvalue 3 PostQueuedCompletionStatus函数定义如下 BOOLPostQueuedCompletionStatus HANDLECompletionPort handletoanI OcompletionportDWORDdwNumberOfBytesTransferred bytestransferredULONG PTRdwCompletionKey completionkeyLPOVERLAPPEDlpOverlapped
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商场装修合同
- 三水杨酸胆碱镁销售合同3篇
- (翼人2024版)科学一年级上册2.5 简单工具 课件(新教材)
- 瑞典简介课件
- 安全方面培训班名称大全课件
- 理财实战课件
- 改造工程加固方案咨询(3篇)
- 安全教训培训课件
- 房屋工程规划方案(3篇)
- 地铁工程复工方案(3篇)
- 房屋学位租赁合同协议书
- YC/T 320-2009烟草商业企业管理体系规范
- GB/T 12755-1991建筑用压型钢板
- DL-T 5190.1-2022 电力建设施工技术规范 第1部分:土建结构工程(附条文说明)
- 燃气轮机介绍课件
- 2023年南京江宁交通建设集团有限公司招聘笔试模拟试题及答案解析
- 消防安全检查申报表
- 海飞丝销售策划书模板
- 工程技术研究中心(重点实验室)可行性研究报告
- 城市轨道交通综合监控系统整套课件汇总完整版电子教案(全)
- 部编版五年级上册第一单元集体备课
评论
0/150
提交评论