




免费预览已结束,剩余23页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WinSockI O模型WSAEventSelect模型 网络程序设计 2 回顾 WSAAsyncSelect模型 WSAAsyncSelect模型特点 将套接字绑定到窗口句柄 将网络事件与Windows消息关联 当套接字有网络事件发生时 将网络事件以Windows消息的形式派发给绑定的窗口 然后在窗口函数WindowProc中处理Windows消息 即网络事件 3 WinSockI O模型 WSAEventSelect模型 WSAEventSelect模型原理WSAEventSelect函数WSAWaitForMultipleEvents函数WSAEnumNetworkEvents函数WSAEventSelect模型编程WSAEventSelect模型小结动手实践 4 WinSockI O模型 WSAEventSelect模型 WSAEventSelect模型原理WSAEventSelect函数WSAWaitForMultipleEvents函数WSAEnumNetworkEvents函数WSAEventSelect模型编程WSAEventSelect模型小结动手实践 5 1 WSAEventSelect模型原理 WSAEventSelect模型 事件选择模型 与WSAAsyncSelect模型类似 可让应用程序在一个或多个套接字上接收网络事件 其接收的网络事件也是FD XXX类型 不过它依靠的不是Windows消息驱动机制 而是事件对象 6 1 WSAEventSelect模型原理 需要说明的是 该模型中使用的事件对象结构 也是高性能I O模型 重叠模型和完成端口模型中的重要数据结构 所以理解事件选择模型 也有助于自学时理解重叠模型和完成端口模型的原理 7 1 WSAAsyncSelect模型原理 WSAEventSelect模型原理图 8 WinSockI O模型 WSAEventSelect模型 WSAEventSelect模型原理WSAEventSelect函数WSAWaitForMultipleEvents函数WSAEnumNetworkEvents函数WSAEventSelect模型编程WSAEventSelect模型小结动手实践 9 2 WSAEventSelect函数 WSAEventSelect函数为套接字及其网络事件关联一个事件对象 Event对象 当有网络事件发生时 相应的事件对象变为受信状态 然后就可以从受信的事件对象中获取网络事件详情 intWSAEventSelect SOCKETs 套接字句柄WSAEVENThEventObject 事件对象句柄longlNetworkEvents 感兴趣的网络事件组合 如FD ACCEPT FD CLOSE 返回值 调用成功 返回0 失败 返回SOCKET ERROR 可调用WSAGetLastError 获取错误码 10 WinSockI O模型 WSAEventSelect模型 WSAEventSelect模型原理WSAEventSelect函数WSAWaitForMultipleEvents函数WSAEnumNetworkEvents函数WSAEventSelect模型编程WSAEventSelect模型小结动手实践 11 3 WSAWaitForMultipleEvents函数 网络事件与事件对象关联后 应用程序在事件对象上等待 以检测有哪些事件对象处于受信状态 DWORDWSAWaitForMultipleEvents DWORDcEvents 指定下面数组中事件对象句柄的个数constWSAEVENT lphEvents 指向一个事件对象句柄数组BOOLfWaitAll 是否等待所有的事件对象都变为受信状态DWORDdwTimeout 指定要等待的时间 毫秒 WSA INFINITE表示无限大BOOLfAlertable 在使用WSAEventSelect模型时忽略该参数 设为FALSE 12 3 WSAWaitForMultipleEvents函数 WSAWaitForMultipleEvents最多支持WSA MAXIMUM WAIT EVENTS个事件对象 即64个 如果要管理多个套接字 就需要创建额外的工作线程 13 3 WSAWaitForMultipleEvents函数 WSAWaitForMultipleEvents会等待网络事件的发生 1 如果等待超时 则返回WSA WAIT TIMEOUT 2 如果在指定时间内有网络事件发生 返回值会指明是哪一个对象受信导致函数返回 3 如果函数调用失败 则返回WSA WAIT FAILED 14 3 WSAWaitForMultipleEvents函数 注意 将fWaitAll设为FALSE时 如果同时有多个事件对象受信 返回值也只能指明一个 即数组中最前面的那个事件对象 15 3 WSAWaitForMultipleEvents函数 问题 使用WSAWaitForMultipleEvents 轮询事件对象数组时 如果这个事件对象一直受信 总有网络事件发生 则后面其它事件对象对应的套接字的网络事件就得不到处理了 解决 当调用WSAWaitForMultipleEvents 返回后不直接进行网络事件处理 而是再次遍历每个事件对象 针对每个事件对象调用WSAWaitForMultipleEvents 函数 以确定其受信状态 16 WinSockI O模型 WSAEventSelect模型 WSAEventSelect模型原理WSAEventSelect函数WSAWaitForMultipleEvents函数WSAEnumNetworkEvents函数WSAEventSelect模型编程WSAEventSelect模型小结动手实践 17 4 WSAEnumNetworkEvents函数 一旦知道受信的事件对象 根据数组元素索引号就可以找到对应的套接字 然后可以调用WSAEnumNetworkEvents 函数 查看到底发生了什么网络事件 intWSAEnumNetworkEvents SOCKETs 套接字句柄WSAEVENThEventObject 对应的事件对象句柄LPWSANETWORKEVENTSlpNetworkEvents 出参 指向一个 WSANETWORKEVENTS结构 存储网络事件和相关出错码 返回值 调用成功 返回0 失败 返回SOCKET ERROR 可调用WSAGetLastError 获取错误码 18 4 WSAEnumNetworkEvents函数 WSANETWORKEVENTS结构定义如下 typedefstruct WSANETWORKEVENTS longlNetworkEvents 指定发生的网络事件 如FD READ FD WRITE等intiErrorCode FD MAX EVENTS 与lNetworkEvents网络事件对应的出错码 WSANETWORKEVENTS LPWSANETWORKEVENTS 19 WinSockI O模型 WSAEventSelect模型 WSAEventSelect模型原理WSAEventSelect函数WSAWaitForMultipleEvents函数WSAEnumNetworkEvents函数WSAEventSelect模型编程WSAEventSelect模型小结动手实践 20 5 WSAEventSelect模型编程 5 1效果演示 21 5 WSAEventSelect模型编程 5 2使用WSAAsynceSelect模型编写TCP服务器示例 22 5 WSAEventSelect模型编程 5 3测试WSAAsyncSelect模型TCP服务器使用以前编写的TCP客户端程序进行连接 通信测试 观察运行效果 23 WinSockI O模型 WSAEventSelect模型 WSAEventSelect模型原理WSAEventSelect函数WSAWaitForMultipleEvents函数WSAEnumNetworkEvents函数WSAEventSelect模型编程WSAEventSelect模型小结动手实践 24 6 WSAEventSelect模型小结 WSAEventSelect模型特点 将套接字绑定到事件对象 当套接字有网络事件发生时 对应的事件对象变为受信状态 然后从受信的事件对象中获取网络事件详情 并对网络事件进行处理 25 WinSockI O模型 WSAEventSelect模型 WSAEventSelect模型原理WSAEventSelect函数WSAWaitForMultipleEvents函数WSAEnumNetworkEvents函数WSAEventSelect模型编程WSAEventSelect模型小结动手实践 26 5 动手实践 动手实践环节 1 认真阅读 分析 理解示例中的TCP服务器代码 2 修改并测试代码 要求服务器监听8010端口 服务器收到信息后进行显示 并发送 你好 我是WSAEventSelect模型服务器 给
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广州医科大学校本部招聘工作人员9人(第二次)模拟试卷及答案详解(夺冠)
- 2025湖北咸宁市通城县高层次和急需紧缺人才企业招聘185人考前自测高频考点模拟试题及1套参考答案详解
- 2025广州银行经营机构人才招聘考前自测高频考点模拟试题含答案详解
- 2025年国网河南省电力公司子公司18家单位招聘高校毕业生180人(第三批)考前自测高频考点模拟试题及参考答案详解一套
- 2025内蒙古鄂尔多斯市康巴什区青年就业见习计划招募考前自测高频考点模拟试题附答案详解(模拟题)
- 2025黑龙江哈尔滨市工人文化宫工作人员招聘7人模拟试卷完整答案详解
- 2025杭州青少年活动中心招聘工勤岗位工作人员20人模拟试卷及答案详解(各地真题)
- 2025年湖南省郴州桂阳县龙潭街道城镇公益性岗位招聘模拟试卷及答案详解(新)
- 2025年上半年四川省教育化与大数据中心(四川省电化教育馆)招聘编外工作人员3人考前自测高频考点模拟试题附答案详解
- 2025德州齐河县事业单位“人才回引计划”考前自测高频考点模拟试题附答案详解(黄金题型)
- 建设工程“三包一挂”法律实务精要
- 乡村医生年度个人述职报告(2篇)
- 钙钛矿光催化分解水制氢技术进展
- 读后续写+小狗Deedo被留下陪伴小主人+讲义 高三英语二轮复习
- 麦肯锡的《问题分析与解决技巧》课件
- 加油站新进员工培训计划方案
- 武汉天河机场招聘笔试题及答案
- 湿陷性黄土湿陷量计算表
- 在课堂教学中寻找发展学生科学思维的生长点课件
- 因离婚给孩子申请改姓协议书
- 大众蔚揽保养手册
评论
0/150
提交评论