首页 > 系统相关 >Windows网络编程之事件选择模型(三)

Windows网络编程之事件选择模型(三)

时间:2023-09-29 13:22:09浏览次数:31  
标签:绑定 函数 Windows 模型 编程 FD 事件 接字 客户端

一、WSACreateEvent函数

WSACreateEvent函数是Windows套接字API中的一部分,它用于创建套接字事件对象,以便在套接字操作上等待事件发生。这个函数通常与异步套接字操作一起使用,以允许应用程序异步地等待套接字事件的发生,而不需要阻塞线程。

函数原型:

WSAEVENT WSAAPI WSACreateEvent(void);

参数:

无需传递任何参数。

返回值:

  • 如果成功,函数返回一个WSAEVENT类型的句柄,代表创建的套接字事件对象。
  • 如果失败,函数返回WSA_INVALID_EVENT,并且可以通过WSAGetLastError()函数获取错误代码。

二、WSAEventSelect函数

WSAEventSelect函数是Windows套接字编程中常用的函数,用于指定一个或多个事件,以便在套接字上等待这些事件的发生。这个函数通常与异步套接字一起使用,以允许应用程序在等待事件发生时不会阻塞线程。

函数原型:

int WSAEventSelect(
  SOCKET     s,
  WSAEVENT   hEventObject,
  long       lNetworkEvents
);

参数:

  • s:要关联事件的套接字的描述符。
  • hEventObject:一个套接字事件对象的句柄,通常通过WSACreateEvent函数创建。
  • lNetworkEvents:一个标志位,用于指定要关联的事件类型。可以使用各种常量来设置这些标志,例如FD_READFD_WRITEFD_ACCEPTFD_CONNECT等。
    1. FD_ACCEPT:有客户端链接,与服务器socket绑定。
    2. FD_READ:有客户端发来消息,与客户端socket绑定,可多个属性并列用。
    3. FD_CLOSE:客户端下线,与客户端socket绑定,包含强制下线,正常下线。
    4. FD_WRITE:可以给客户端发送信息,与客户端socket绑定,会在accept后立即主动产生该信号,可以说明,客户端链接成功,即可随时发送信息。
    5. FD_CONNECT:客户端一方,给服务器绑定这个。
    6. 0:取消事件监视

返回值:

  • 如果函数成功,返回值为0。
  • 如果函数失败,返回值为SOCKET_ERROR,并且可以通过WSAGetLastError()函数获取错误代码。

  

  

标签:绑定,函数,Windows,模型,编程,FD,事件,接字,客户端
From: https://www.cnblogs.com/TechNomad/p/17736932.html

相关文章

  • Unix/Linux系统编程学习笔记第七、八章
    Unix/Linux系统编程学习笔记第七、八章知识点归纳以及最有收获的内容文件操作级别文件和目录的基本操作创建文件:使用touch命令或编程语言中的文件创建函数。-创建目录:使用mkdir命令或编程语言中的目录创建函数。复制文件或目录:使用cp命令或编程语言中的复制函数。移......
  • Windows共享
    Windows共享1.注意:如果两台主机没有ping通的话,请注意检查防火墙是否关掉。(或者对防火墙进行精细化设置)2.3.4.首先,我们在服务器上创建一个test文件夹。并设置NTFS权限:1.zhangsan对其具有完全控制权限2.zhangsan1对其具有读取和执行权限......
  • 使用 AI 编程助手 CodeWhisperer,开发如有神助
    前段时间体验了chatGPT,听说它可以写代码,结果发现更多的只是一个对答写小作文的百度助手,虽然也能写代码,但不是我想要的,可以在idea中可以快速生成代码块的。一个偶然的机会,从微信群里了解到,由亚马逊云科技推出的CodeWishPerer开发插件,可以在多个开发环境中使用,如:VisualStudio(VS......
  • 零代码编程:用ChatGPT批量修改文件夹名称中的大小写
    一个文件夹下面有很多个子文件夹,要把文件夹中的大写数字全部重命名为小写数字,比如将二三四,改成:234在ChatGPT中输入提示词如下:你是一个Python编程专家,要完成一个文件夹重命名的任务。具体步骤如下:本地电脑“E:\PeppaPig小猪佩奇”文件夹下有很多个文件夹;获取所有文件夹标题名......
  • 零代码编程:用ChatGPT批量将多个文件夹中的视频转为音频
    有多个文件夹中的视频,都要批量转换成音频格式。转换完成后要删除视频。虽然现在已经有很多格式转换软件可以实现这个功能,但是需要一个个文件夹的操作,还要手动去删除视频。用ChatGPT来写一个批量自动操作程序吧:输入提示词如下:你是一个Python编程专家,要完成一个批量转换格式的任务,具......
  • FastAPI学习-25.response_model 定义响应模型
    你可以在任意的_路径操作_中使用 response_model 参数来声明用于响应的模型:@app.get()@app.post()@app.put()@app.delete()fromtypingimportAny,List,UnionfromfastapiimportFastAPIfrompydanticimportBaseModelapp=FastAPI()classItem(BaseModel)......
  • QRes v1.1是由Anders Kjersem开发的一个工具,用于在Windows上更改分辨率。它提供了一些
    QResv1.1是由AndersKjersem开发的一个工具,用于在Windows上更改分辨率。它提供了一些命令行选项来控制分辨率、颜色深度和刷新率等参数。协助用户更改桌面分辨率,颜色深度和刷新率。具有命令行工具,无需启动GUI界面即可更改所有这些设置。显示使用情况信息并自动将配置保存在注册......
  • 玩一玩“baichuan2”,很强的中文开源模型,2060s即可流畅运行!
    OpenAIChatGPT出来后,热闹了好一阵子!先是一波大厂闭源PK。然后Meta不按套路出牌,直接放出来开源的Llama1-2 后来就百花齐放了。但是外国的模型默认情况下中文支持都不好。另外很多开源模型,最简单的对话都一塌糊涂。今天来玩一个不错的中文开源模型。先来简......
  • 聊聊基于Alink库的决策树模型算法实现
    示例代码及相关内容来源于《Alink权威指南(Java版)》概述决策树模型再现了人们做决策的过程,该过程由一系列的判断构成,后面的判断基于前面的判断结果,不断缩小范围,最终推出结果。如下,基于决策树模型预测天气,是最常见的示例。天气的整个预测过程,就是不断地判断推测的过程。特征......
  • 编程基础与Python的开发模式
    1.3.1程序设计的概念1.逻辑设计(1)过程的起点是分析并确定需求。(2)从现实中抽象。(3)抽象过后是设计算法。2.程序设计(1)选择编程语言。(2)设计数据结构。(3)设计业务逻辑。(4)选择开发模式。1.3.2程序的生命周期(1)硬件部分。(2)操作系统。(3)汇编语言。(4)高级语言。(5)应......