WinSock---WSAAsyncSelect IO模式小结

WSAasyncSelect 异步选择消息模型 WSAasyncSelect 异步选择消息模型适用于简单对效率要求不太高的windows窗口程序。 该模型windows为用户封装好了线程调用,以消息的方式通知accep/recv等事件是否已经发生,不用一直阻塞等待。 下面是这种模型的简单代码实现: 主要针对服务器accept 和recv做异步调用 主要看加出的部分: #include <tchar.h> #include ... 阅读详情

在使用WSAAsyncSelect之前 一般要先自定义一个用户消息,然后在  WSAAsyncSelect 中设定 在socket发生某个事件时,发送指定消息给的某个窗口,然后在这个消息处理函数中处理事件信息,

关于事件处理函数中的参数信息(即消息 附带的参数)

可以看

如何判断通过WSAAsyncSelect 注册的事件中,发生的是那个

 

WSAAsyncSelect 函数用来请求Windows Sockets DLL为窗口句柄发一条消息-无论它何时检测到由lEvent参数指明的网络事件.要发送的消息由wMsg参数标明.被通知的套接口由s标识.

          本函数自动将套接口设置为非阻塞模式.

          lEvent参数由下表中列出的值组成.

          值 意义

          FD_READ 欲接收读准备好的通知.

          FD_WRITE 欲接收写准备好的通知.

          FD_OOB 欲接收带边数据到达的通知.

          FD_ACCEPT 欲接收将要连接的通知.

          FD_CONNECT 欲接收已连接好的通知.

          FD_CLOSE 欲接收套接口关闭的通知.

         

          启动一个WSAAsyncSelect()将使为同一个套接口启动的所有先前的WSAAsyncSelect()作废. 例如,要接收读写通知,应用程序必须同时用FD_READ和FD_WRITE调用WSAAsyncSelect(),如下:

          rc = WSAAsyncSelect(s, hWnd, wMsg, FD_READ|FD_WRITE);

          对不同的事件区分不同的消息是不可能的.下面的代码将不会工作;第二个调用将会使第一次调用的作用失效,只有FD_WRITE会通过wMsg2消息通知到.

                          rc = WSAAsyncSelect(s, hWnd, wMsg1, FD_READ);

                          rc = WSAAsyncSelect(s, hWnd, wMsg2, FD_WRITE);

          如果要取消所有的通知,也就是指出Windows Sockets的实现不再在套接口上发送任何和网络事件相关的消息,则lEvent应置为0.

 

 

 

WinSock I/O 模型 -- WSAAsyncSelect 模型 简介 WSAAsyncSelect 模型也是 WinSock 中常见的异步 I/O 模型。 使用这个模型,网络应用程序通过接收以 Windows 消息为基础的网络事件通知来处理网络请求。 这篇文章我们就来看看如何使用 WSAAsyncSelect api 来实现一个简单的 TCP 服务器. API 基础 要使用 WSAAsyncSelect 模型,我们必须创建一个窗口, 再为该窗口对象提供一个窗口历程(WinProc). 通过适当的配置之后,当有网络请求到来的时候,windows 会将网络消息投递到我们所创 阅读详情

相关推荐

稳定性仿真(stb闭环增益仿真)

stb仿真主要是测试电路的稳定性,例如运放在闭环电路中的增益和相位裕度的值,从而判别电路是否正常工作。 以下是stb仿真的过程: (1)调用iprobe器件 从analogLib中调iprobe器件,通过器件中的箭头标识确定接入电路的方法,箭头起点端连运放的输出端,箭头的终点端连在反馈环路的作用端。iprobe器件连入电路后相当于理想导线。(iprobe器件连接在反馈回路上) (2)analyses设置 勾选stb和frequency,此处的频率范围设置在0.1~1GHz,Probe Instance/T

qq_36686804的博客 3万+

【网络编程】之八、异步选择WSAAsyncSelect

大家用这个模型,可以让应用程序在一个套接字上接收以windows消息为基础的网络事件通知。我们想要用这个操作,具体的做法就是我们建立一个套接字,然后调用WSAAsyncSelect函数, 也就是说,这个模型的核心就是我们的这个函数; 来看一下函数原型: int WSAAsyncSelect( _In_ SOCKET s,//我们感兴趣的套接字 _In_ HWND hWnd...

weixin_30301449的博客 234

别再手动配IP了!保姆级教程:用Cisco Packet Tracer搞定DHCP服务器配置(附实验抓包分析)

本文提供了一份详细的Cisco Packet Tracer DHCP服务器配置教程,帮助用户告别手动分配IP的繁琐过程。通过构建多子网实验环境,逐步指导DHCP地址池设置、客户端测试及协议分析,并分享常见问题排查技巧,让网络配置更高效、更智能。

weixin_42535461的博客 336

WSAAsyncSelect模型

#include #include "WSAInit.h" #define WM_SOCKET (WM_USER + 101)        // 自定义消息 #define MAX_LEN 1024 CWSAInit theSocket; LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM l

tzwh_86的专栏 586

SAP 财务快速记账之—G/L Item Fast Entry

SAP FICO 运维解决方案

lijinbao171022的博客 1646

PyTorch深度学习实战(6)——神经网络性能优化技术

神经网络性能优化技术是指通过改进神经网络的结构、参数初始化、正则化和训练过程等方面来提高其性能和泛化能力的方法。优化技术的选择和调试需要根据具体问题进行,通过不断实验和调整,找到最适合网络的优化策略。本节首先训练了一个简单的全连接网络,然后在此基础上介绍了简单有效的神经网络性能提升技巧。

盼小辉丶的博客 1万+

dll中获取当前窗口的句柄

在dll中,我们或多或少的需要获取加载dll的当前窗口的句柄 下面就有一种方法: 通过EnumWindows枚举所有窗口在比较传入的当前进程的PID与枚举的进程的线程ID。 如果相同,这就返回枚举到的句柄,并结束枚举 GetWindowThreadProcessId哪个线程创建了这个窗口,返回的就是这个线程的id号。 代码如下 1 #include <windows.h&g...

weixin_30700099的博客 920

【第三方互联】12、支付宝(Alipay)授权第三方登录

我们创建了支付宝开放平台的网页&移动应用,审核通过后,我们需要拿到appid,支付宝公钥,私钥进项开发 一、添加应用信息至项目环境中 我们保存了 appid、应用私钥、支付宝公钥、支付宝回调地址等信息,这里的公钥为支付宝开放平台为我们生成的“支付宝公钥” 二、引入 Maven 依赖 <!-- 支付宝SDK --> <dependency> <g.........

JACKAL 21万+

WinSock IO模型二: WSAAsyncSelect 消息机制

WSAAsyncSelect基于Windows消息机制异步I/O模型,为特定网络事件指定系统通知信息. 函数定义: int WSAAsyncSelect(SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent);   (1)参数4-1Event:设定用户关心得套接口上的网络事件.形式如:1Event=FD_READ/FD_CLO

人生代码,代码人生。。。 1108

第1集:认识 Claude Code —— AI 编程新纪元

1. 定义 Claude Code:终端中的 AI 编程代理Claude Code 是 Anthropic 公司于 2025 年 5 月正式推出的命令行 AI 编程工具,它不只是一个代码补全工具,而是一个能够理解项目、自主执行任务的**终端 AI 代理(Agent)。它的核心理念是 **"生于终端,活于终端"** (lives in your terminal)。与深度嵌入图形界面(GUI)的工具不同,Claude Code 选择直接融入开发者最原始、最核心的工作环境——命令行。

dianziyao_的博客 864

芒果YOLOv5改进107:ARConv自适应旋转卷积,全网首发 | 即插即用:以增强其表征能力,从而准确检测方向物体,ICCV顶会论文idea

ARConv自适应旋转卷积,全网首发 | 即插即用:以增强其表征能力,从而准确检测方向物体,ICCV顶会论文idea

包括YOLOv5、YOLOv7、YOLOv8等模型改进 955

[WinSock]封装WSAAsyncSelect!

封装目标: 最终目标是封装WinSock的WSAAsyncSelect IO模型。 封装原则: 耦合性[减少各种依赖,包括classes之间,编译模块之间。],小粒度增加可复用性。 依赖ATL/WTL。  CKxAsyncSocket 是我要实现的class,它只需要维护SOCKET成员,另外因为是异步选择,所以可以再维护一个HWND。 关于HWND,是否有必要

liujiayu2的专栏 794

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WinSock---WSAAsyncSelect IO模型和select模型的比较

 关于WSAAsyncSelect IO模型和 select模型的比较。个人认为一个是被动的,一个是被动的。 WSAAsyncSelect IO模型 是基于事件的。也就是说用 WINSOCK_API_LINKAGE int WSAAPIWSAAsyncSelect(    SOCKET s,    HWND hWnd,    u_int wMsg,    long lEvent  

1515

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Winsock IO模型之WSAAsyncSelect模型

该模型允许应用程序以Windows消息的形式接收网络事件通知,满足现在许多对性能要求不高的网络应用程序。MFC中的CSocket类也使用了它。     WSAAsyncSelect函数自动把套接字设为非阻塞模式,并且为套接字绑定了一个窗口句柄,当有网络事件发生时,便向这个窗口发送消息。     int WSAAsyncSelect(           SOCKET s,

Lostyears的专栏 1037

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Winsock 套接字非阻塞模式小例程 WinSock IO模型

服务器端使用非阻塞套接字,允许有多个客户接入。客户端使用阻塞套接字。服务器端循环轮询方式。 /***设套接字为非阻塞模式***/ unsigned long ul = 1; int nRet=ioctlsocket(sock_server, FIONBIO, &amp;ul); //设置套接字非阻塞模式 if (nRet == SOCKET_ERROR) { cout &lt;&lt...

m0_37357063的博客 3101

【转载&整理】Winsock 非阻塞IO

先来说一下同步/异步、阻塞/非阻塞的问题。同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。阻塞调用是指调用结果返回之前,当

Height'>0 714

详细解析WSAAsyncSelect模型

WSAAsyncSelect模型是Windows socket的一个异步IO模型。利用该模型可以接收以Windows消息为基础的网络事件。Windows sockets应用程序在创建套接字后,调用WSAAsyncSelect函数注册感兴趣的网络事件,当该事件发生时Windows窗口收到消息,应用程序就可以对接收到的网络时间进行处理。WSAAsyncSelect是select模型的异步版本。在应用程

liujiayu2的专栏 1万+

WINSOCK IO 方法

套接字模式:锁定、非锁定套接字I/O模型:      select(选择)WSAAsyncSelect(异步选择)WSAEventSelect(事件选择)Overlapped I/O(重叠式I / O)Completion port(完成端口)  一、 简介 套接字模型的出现,是为了解

legion8169的专栏 968

WinSock三种选择I/O模型

select模型本质上是一种分类处理思想,预先声明几个FD_SET(fd_set结构)集合(使用FD_ZERO初始化),例如ReadSet、WriteSet,fd_set数据类型本质上代表着一系列按关注事件分类的套接字集合。 本文讨论三种选择模型(都带select,姑且这样称呼):select(选择)、WSAAsyncSelect(异步选择)、WSAEventSelect(事件选择)。

曾梦想仗剑走天涯 5720

Winsock IO方法

Winsock分别提供了套接字模式和套接字I/O模型。套接字模式用于决定Winsock函数随套接字调用的行为,套接字模型描述了一个应用程序如何对套接字上的I/O进行管理及操作。 套接字模式包含:阻塞模式和非阻塞模式。所有的Windows平台都支持这两种模式。 I/O模型有助于应用程序通过某种异步方式,一次对一个或多个套接字上进行的通信加以管理。这些模型包括Non-blocking select...

weixin_34190136的博客 86

WINSOCK I/O之WSAAsysncSelect

套接字模式有两种模式一种是锁定模式,一种是非锁定模式SOCKET sock;char buff[256];int done=0;while(!done){    nBytes=recv(sock,buff,65);    if(nBytes==SOCKET_ERROR)    {        printf("recv failed with error %d/

vbanglev的小窝^_^ 1905

WSAAsyncSelect模型Delphi简单实现

WSAAsyncSelect模型允许应用程序以Windows消息的形式接收网络事件通知。 WSAAsyncSelect函数自动将套接字设置为非阻塞形式,并且为套接字绑定一个窗口句柄,当有网络事件发生时,便向这个窗口发送消息,函数定义如下: int WSAAsyncSelect( //需要设置的套接字句柄 SOCKET s, //指定的一个窗口句柄 //套接字的通知消息将被发送到与其对应

dongyue786的专栏 1762

Winsock 网络编程 Socket模型之WSAAsyncSelect模型

前言: 讲一下套接字模式和套接字I/O模型的区别。先说明一下,只针对Winsock 套接字模式:阻塞套接字和非阻塞套接字。或是叫同步套接字和异步套接字。 套接字模型:描述如何对套接字的I/O行为进行管理 Winsock提供的I/O模式一共有五种: Select模型,WSAAsyncSelect模型,WSAEventSelect模型,Overlapped模型(重叠IO),Compl

未来取款机 730
上一篇: 如何判断通过WSAAsyncSelect 注册的事件中,发生的是那个
下一篇: MIME 介绍
xyjnufop
博客等级 码龄19年 10粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值