已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年鞍山辅警招聘考试题库附答案详解(考试直接用)
- 2025年阜新辅警协警招聘考试备考题库及完整答案详解一套
- 2025年鹤壁辅警招聘考试真题含答案详解(培优a卷)
- 2025年珠海辅警招聘考试题库完整参考答案详解
- 2025年衢州辅警协警招聘考试备考题库附答案详解(黄金题型)
- 2025年牡丹江辅警招聘考试真题及参考答案详解一套
- 2025年襄樊辅警协警招聘考试真题含答案详解(培优a卷)
- 2025年长治辅警招聘考试题库及完整答案详解
- 2025年黄山辅警协警招聘考试真题带答案详解(完整版)
- 2025年舟山辅警协警招聘考试真题及完整答案详解
- DB4105∕T 227-2024 甲骨文广播体操动作规范
- 江苏的历史文化课件
- 矿山修复培训课件
- 住房公积金政策培训课件
- 胶水培训课件
- 中国铁塔安全管理制度
- 产品防护管理制度
- 医院安全后勤管理制度
- 2025-2030中国高效消泡剂行业市场现状供需分析及投资评估规划分析研究报告
- T/CECS 10046-2019绿色建材评价树脂地坪材料
- T/CAQI 210-2021果蔬清洗装置
评论
0/150
提交评论