WSAEventSelect模型学习

Windows socket之WSAEventSelect模型_wsaeventselect模型的socket编程和客户端应用的功能 在while循环内,循环调用WSAWaitForMultipleEvents函数等待网络事件的发生,当网络事件发生时函数返回,并通过该函数的返回值得到发生网络事件的套接字。3:如果要取消事件对象与网络事件的关联,以及为套接字注册的网络事件。这些标识符的命名规则是对应的网络事件后面添加_BIT.例如,对于FD_READ事件的网络事件错误标识符为FD_READ_BIT。如果发生FD_CLOSE网络事件,将该套接字从套接字数组清除,同时将对应事件从事件数组删除。事件对象数量减一,并关闭该套接字。 阅读详情
       它允许程序在一个套接字上接收以事件为基础的网络事件通知。
事件对象
       该模型要求程序对打算使用的每个套接字首先创建一个事件对象,方法是调用WSACreateEvent函数
WSAEVENT WSACreateEvent( void );
该函数返回创建好的事件对象。
        事件对象创建好后,必须将其与某个套接字关联在一起,同时注册感兴趣的网络事件类型。需调用WSAEventSelect函数。
int WSAEventSelect(
    SOCKET    sock,   /* 套接字 */
    WSAEVENT hEvent,   /* 事件对象 */
    long   lNetworkEvents /* 对应一个"位掩码",指定感兴趣的网络事件类型 */
    );
创建的事件拥有两种工作状态和两种模式。
工作状态 : 已传信和未传信
工作模式 : 人工重设和自动重设
由WSACreateEvent创建的事件对象,默认工作状态为"未传信",工作模式为"人工重设",当网络事件触发了与套接字关联在一起的事件对象时,工作状态会转变为"已传信",而在完成了一个I/O请求的处理之后,因为工作模式为"人工重设",因此,程序需要将工作状态从"已传信"改变为"未传信",使用WSAResetEvent函数
BOOL WSAResetEvent( WSAEVENT hEvent );
当程序不在对事件对象进行处理时,应调用WSACloseEvent函数将其关闭
BOOL WSACloseEvent( WSAEVENT hEvent );
套接字与事件对象关联在一起后,便可开始进行I/O操作,方法是等待一个或多个事件对象,并在事先指定的一个或所有句柄进入"已传信"状态,或在超过了一个规定的时间间隔后,立即返回。使用WSAWaitForMultipleEvents函数
DWORD WSAWaitForMultipleEvents(
   DWORD cEvents,   /* 指定lphEvents的数量,最大为WSA_MAXIMUM_WAIT_EVENTS(64) */
   const WSAEVENT *lphEvents, /* 事件对象数组 */
   BOOL fWaitAll,
   DWORD dwTimeout,   /* 等待时间,为0,立即返回,为WSA_INFINITE,永不返回 */
   BOOL fAlertable   /* 可设为FALSE */
     );
fWaitAll : 指定如何等待lphEvents数组内的事件对象,为TRUE时,只有当所有事件对象都进入"已传信"时,才会返回,若为FALSE时,只要一个事件进入"已传信"状态,就返回,通常设为FALSE
返回值:返回发生网络事件的事件对象索引
当发生网络事件后,接下来可调用WSAEnumNetworkEvents函数来检查发生了什么类型的网络事件
int WSAEnumNetworkEvents(
   SOCKET sock,
   WSAEVENT hEvent,
   LPWSANETWORKEVENTS lpNetworkEvents
    );
lpNetworkEvents : 为一个结构,内包含发生的事件及可能的错误代码
typedef struct _WSANETWORKEVENTS
{
long lNetworkEvents;    /* 发生的网络事件 */
int iErrorCode[FD_MAX_EVENTS]; /* 可能的错误代码 */
}WSANETWORKEVENTS,*LPWSANETWORKEVENTS;
iErrorCode : 指定错误代码数组,其索引名为事件类型名+'_BIT'(如FD_READ_BIT)
Windows IO模型-WSAEventSelect模型(异步阻塞模型) 事件选择(WSAEventSelect)模型:基于事件通知,事件是一个有操作系统管理的内核对象,当前系统基于事件机制,该模型则可以使用,事件两种状态,有信号和无信号,检测事件,若有信号则进行相应处理。 参考博客:http://www.cnblogs.com/venow/archive/2012/06/12/2543065.html  缺点:(1)不能同时处理多个Socket,有数量限制。要么W 阅读详情

相关推荐

VC网络编程模型示例 - WSAEventSelect

VC编程模型示例之 WSAEventSelect 模型 配套讲解请参考我的blog http://blog.youkuaiyun.com/PiggyXP

【转】WSAEVENTSELECT模型-简述

WSAEVENTSELECT模型-简述 http://www.hudong.com/wiki/WSAEVENTSELECT模型确定与所提供的FD_XXX网络事件集合相关的一个事件对象。  #include   int WSAAPI WSAEventSelect ( SOCKET s, WSAEVENT  hEventObject, long lNetworkEvents );  s

scuabin的专栏 635

TouchGFX使用教程(三)

TouchGFX使用教程(三)界面事件控件修改方法图片等资源放置位置 界面事件 控件修改方法 图片等资源放置位置

yuanzhan11的专栏 6973

事件选择模型

事件选择(WSAEventSelect)模型是另一个有用的异步 I/O 模型。和 WSAAsyncSelect 模型类似的是,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知,最主要的差别在于网络事件会投递至一个事件对象句柄,而非投递到一个窗口例程。     事件通知模型要求我们的应用程序针对使用的每一个套接字,首先创建一个事件对象。创建方法是调用 WSACreateEven

Maybe 952

Yolov26 在 Rk3588 上的 Rknn Onnx 部署实践(c++)

本文介绍了YOLOv26在RK3588平台的C++推理部署方案。重点包括:1)扩展Ultralytics导出格式,新增RKNN_ONNX专用导出选项;2)重构Detect Head结构,使其更适合RKNN推理;3)提供C++侧后处理实现建议。该方案保留了Ultralytics训练生态,通过优化模型结构输出,将解码等操作移至C++端,充分发挥Rockchip NPU性能。适用于RK3588/RK356x等平台,需配合rknn-toolkit2使用,为YOLOv26的嵌入式部署提供完整解决方案。

qq_64366203的博客 2178

Vue3实战:从零构建ElementPlus后台管理系统全流程

本文详细介绍了从零开始使用Vue3和ElementPlus构建后台管理系统的全流程。内容涵盖环境准备、项目初始化、Vite配置、SCSS样式体系搭建、ElementPlus组件库引入与配置,以及封装可复用的SvgIcon组件进行图标管理,旨在帮助开发者快速搭建现代化、可维护的中后台应用。

weixin_29011239的博客 161

探究WSAEventSelect模型

socket 2009-12-04 12:28:13 阅读260 评论4 字号:大中小 WSAEventSelect模型也是I/O模型中较为常用的一个异步模型,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知。该模型最主要是将网络事件投递至一个事件对象句柄。    事件通知   事件通知模型要求我们的应用程序针对打算使用的每一个套接字,首先创建一个事件对象。创建方法是调

answermj的专栏 677

2019年高教社杯全国大学生数学建模竞赛 C 题:《机场的出租车问题》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 3459

网络学习之WSAEventSelect模型

WSAEventSelect模型是一个异步事件通知模型。允许应用程序在一个或多个套接字上接收收基于事件的网络通知。它与WSAAsyncSelect模型类似,但不是依靠windows的 消息驱动机制,而是经由事件对象句柄通知。 主要函数: WSACreateEvent 创建一个事件对象 WSAEventSelect 网络事件与事件对象进行关联。 具体参数: socket s ...

weixin_30414245的博客 154

深度强化学习 | 基于SAC算法的移动机器人路径跟踪(附Pytorch实现)

软性演员-评论家(Soft Actor-Critic, SAC)算法是基于最大熵原理的离线策略方法,本节将基于深度强化学习中的SAC算法实现移动机器人的路径跟踪,介绍网络设计、动作空间设计和奖励函数设计,并提供Pytorch实现加深理解

FRIGIDWINTER的博客 5736

[ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429

[ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429 可以使用一些编码字符来制作URI,以访问WEB-INF目录的内容和/或绕过一些安全限制。默认合规模式允许带有包含 %u002e 段的 URI 的请求访问WEB-INF目录中的受保护资源。

qq_51577576的博客 3208

WinSock学习笔记4:WSAEventSelect模型

WSAEventSelect类似于WSAAsycnSelect,区别就是当Socket上有“事件”时,传递一个Event而不是Windows消息。unit Unit1;interfaceuses WinSock2, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dia

dropme——事在人为 1901

Yield Management软件:Lam Research二次开发_(5).缺陷分析与分类方法

在半导体制造过程中,缺陷分析和分类是提高良率管理(Yield Management)的关键步骤。通过准确地识别和分类缺陷,可以更好地理解工艺过程中的问题,从而采取有效的措施来提高生产效率和产品质量。本节将详细介绍缺陷分析和分类的方法,包括缺陷检测、特征提取、分类算法及其在Lam Research软件中的应用。

2401_87715305的博客 691

学习笔记(06):C++网络编程进阶-IO模型之WSAEventSelect

C/S模型在企业级的软件开发中非常常见,高并发网络通讯更是很多项目的核心模块,学好socket 网络编程显得尤为重要,本课程分为TCP/IP 协议、socket基础与进阶的异步通讯模型三个部分,通过浅显易懂的代码与讲解,让你的C++网络编程能力得到质的飞跃,具备开发高并发服务器的能力!...

weixin_38793855的博客 715

学习STM32的DS18B20温度传感器

该函数首先复位传感器,然后发送跳过ROM命令和转换命令,并等待转换完成。接下来,它再次复位传感器,发送跳过ROM命令和读取温度命令。最后,它读取温度值的最低字节和最高字节,并将其组合成16位温度值。传感器的VCC引脚连接到STM32的3.3V电源,GND引脚连接到GND,而数据引脚连接到任何一个IO引脚。需要注意的是,示例代码中使用了一个简单的延时函数来等待转换完成。实际上,您可能需要使用定时器或其他更精确的延时方法来实现更准确的延时。下面是一个示例代码,演示如何读取DS18B20传感器的温度值。

m0_75244442的博客 1182

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Windows socket之WSAEventSelect模型_wsaeventselect模型的socket编程和客户端应用的功能(2)

在while循环内,循环调用WSAWaitForMultipleEvents函数等待网络事件的发生,当网络事件发生时函数返回,并通过该函数的返回值得到发生网络事件的套接字。然后调用WSAEventSelect函数为该套接字关联事件对象,注册FD_READ,FD_WRITE和FD_CLOSE网络事件。3:如果要取消事件对象与网络事件的关联,以及为套接字注册的网络事件。如果发生FD_CLOSE网络事件,将该套接字从套接字数组清除,同时将对应事件从事件数组删除。事件对象数量减一,并关闭该套接字。

2401_85015259的博客 768

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Windows网络编程之选择模型详解

选择模型是指在用户界面中,允许用户选择一个或多个选项的机制。它通常用于表单、列表框、下拉菜单等控件中,帮助用户在多个选项中进行选择。

和舒貌的博客 711

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

五种WinSock I/O模型的特点及比较

======    select  模型:                                    select模型是WinSock中应用最广泛的模型之一,核心就是select函数,它可用于         判断套接字上是否存在数据,或者能否向一个套接字写入数据。                 这个函数可以有效地防止应用程序在套接字处于阻塞模式中时,send或recv进入     

废弃blog 4030

WSAEventSelect模型例子

WSAEventSelect模型和WSAAsyncSelect模型 相同点: 1.都是由系统通知应用程序处理网络事件 2.都是异步的 不同点:通知机制不一样,WSAAsyncSelect模型是以windows的消息机制来通知应用程序的。WSAEventSelect模型是以事件形式通知的。所以一个需要窗口,一个则不需要。建立WSAEventSelect模型步骤:1.为server socket

_ACME_的博客 4922

IO模型之WSAEventSelect

文章目录1. WsaAsyncSelect的缺点2. WsaEventSelect模型3. 在WSAEventSelect模型,流程如下:4. WSACreateEvent函数5. WSAEventSelect函数6. WSAWaitForMultipleEvents函数7. WSAEnumNetworkEvents函数8. WSANETWORKEVENTS的定义9. WSAResetEvent函数10. 服务端代码11. 客户端代码 1. WsaAsyncSelect的缺点 WsaAsyncSelect解

超级大洋葱的博客 1932

WSAEventSelect模型

Winsock提供了另一种有用的异步

一直在路上 540

WSAEventSelect模型编程 详解

WSAEventSelect模型编程      WSAEventSelect模型编程 这个模型是一个简单的异步事件模型,使用起来比较方便,现在说一下其的具体的用法和需要注意的地方。 一,模型的例程(服务端): 先举一个王艳平网络通信上的例子: ////////////////////////////////////////////////// // WSAEventSel

wangjieest的专栏 2万+
上一篇: VC++引用键盘钩子
下一篇: 鼠标屏幕取词技术的原理和实现
Matrix_Designer
博客等级 码龄16年 58粉丝 296原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值