WinSock学习笔记3:Select模型

WinSock I/O 模型 -- Select 模型 简介 Select 模型是 WinSock 中最常见的 I/O 模型,这篇文章我们就来看看如何使用 Select api 来实现一个简单的 TCP 服务器. API 基础 Select 模型依赖 WinSock API Select 来检查当前 Socket 是否可写或者可读。 使用这个 API 的优点是我们不需要使用阻塞的 Socket API (recv, send) 来等待 Socket 状态准备就绪,我们可以异步的检查 Socket 的状态来进行读数据或者写数据. Select 方法的声明如下: i 阅读详情

 

 

1.使用Select模型,要定义一个FDSet结构,将客户端Socket加入该结构,用Select函数轮询测试该Socket的读写状态。FDSet结构:

    typedef struct fd_set {
      u_int fd_count;                                      
      SOCKET fd_array[FD_SETSIZE];           
    } fd_set;

 

2.操作FDSet结构有4个预定义的宏:

       FD_CLR(s, *set)
Removes the descriptor s from set.
       FD_ISSET(s, *set)
Nonzero if s is a member of the set. Otherwise, zero.
       FD_SET(s, *set)
Adds descriptor s to set.
       FD_ZERO(*set)
Initializes the set to the null set.

3.上面的代码为了方便,用了一个Timer来Accept,然后为每一个连接进来的Socket创建线程,在线程中用Select测试是否可读,为使代码简单,没有处理异常的代码。

winsock select 模型源码 winsock select 模型 服务端与客户端的源码 关于select 的更多内容,见http://blog.youkuaiyun.com/cloud95/article/details/7410119 立即下载

相关推荐

Vben Admin权限管理全解析:从动态菜单到按钮级控制(附代码示例)

本文全面解析Vben Admin框架的权限管理系统,从动态菜单生成到按钮级细粒度控制,提供完整的实现方案和代码示例。深入探讨基于角色-权限模型的架构设计,分享前后端协作的最佳实践,帮助开发者快速构建安全高效的企业级后台系统。

weixin_30919429的博客 486

Winsock网络编程笔记:select()函数详解,select例子实现非阻塞TCPServer

套接字集合: fd_set (defined in winsock2.h) fd_set结构可以把多个套接字集合在一起,形成一个套接字集合。select函数可以测试这个集合中哪些套接字有事件发生。 typedef struct fd_set { u_int fd_count; // how many are SET ...

Romantic Chopin in C Sharp Minor 2200

YOLOv8的Anchor-Free革新:从中心点预测到动态IoU匹配的全面解析

本文深入解析了YOLOv8采用Anchor-Free(无锚框)设计的核心优势与实现机制。通过摒弃预设锚框,模型直接预测目标中心点与宽高,结合解耦头、动态IoU匹配及Varifocal Loss等创新,显著简化了训练流程并提升了检测精度,尤其在小目标检测和模型泛化能力上表现突出。

weixin_29094301的博客 356

winsock-select模型总结

本文主要总结了winsock中的select模型,这个是多线程网络编程中最简单的通信模型,并附着了代码实践,可以帮助读者很好的理解select模型并用在自己想要用的地方;

qq_41286360的博客 651

python气象数据可视化学习笔记8——利用matplotlib和ERA5数据绘制时间-高度气象综合廓线图

利用matplotlib和ERA5数据绘制时间-高度气象综合廓线图

qiuylulu的博客 8067

不到200块!手把手教你用ZYNQ7010和AD9363攒一台自己的开源SDR硬件(附BOM清单)

本文详细介绍了如何用不到200元的预算,基于ZYNQ7010 FPGA和AD9363射频芯片打造一台功能完备的开源SDR硬件平台。从核心组件选型、PCB设计到焊接调试,提供全流程实战指南,特别适合预算有限的硬件爱好者和创客群体探索无线通信世界。

weixin_26854829的博客 482

winsock之select选择模型

由于使用传统的socket模型在处理大量的客户端是需要不断的开辟多余的线程,这样无非会很大程度上浪费系统资源,因此,我们需要一种能够管理套接字的模型。最简单的select选择模型可以采用一种有序的方式,轮询fd_set集合,从而同时进行对多个套接字的管理。 所用结构体: typedef struct fd_set { u_int fd_count; ...

qq_43775170的博客 796

FPGA和USB3.0通信-USB3.0 PHY介绍

可以和FPGA搭配使用的USB3.0 PHY芯片通过之前的介绍<FPGA和USB3.0通信-USB3.0协议介绍USB3.0 PHY简介首先我们需要了解PHY具体完成哪些工作以及我利...

OpenFPGA的博客 4940

一、选择模型(select)

█ 选择(select)模型是Winsock中最常见的 I/O模型。核心便是利用 select 函数,实现对 I/O的管理!利用 select 函数来判断某Socket上是否有数据可读,或者能否向一个套接字写入数据,防止程序在Socket处于阻塞模式中时,在一次 I/O 调用(如send或recv、accept等)过程中,被迫进入“锁定”状态;同时防止在套接字处于非阻塞模式中时,产生WSAEWOU

迎风向前 1017

复旦微FMSH_Procise安装全流程详解:从环境配置到实战避坑指南

通过本文的全流程解析+实战技巧,开发者可快速掌握Procise在复旦微芯片开发中的核心应用。未来随着AKConv轻量级架构(参考往期文章)等创新技术的融入,国产芯片开发生态将更加完善。立即关注本专栏,获取最新多镜像切换指南与Linux SDK实战教程!扩展阅读复旦微在线升级BOOT.BIN全解析H7-TOOL实现复旦微脱机烧录(注:本文实验环境为Windows 10 x64 + FMQL45T-CORE开发板,部分操作可能因版本更新调整)立即行动下载本文配套配置文件:[GitHub链接]加入技术交流群。

QQ_778132974的博客 3240

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

|~~~热爱生活、努力学习的小伙汁~~~| 1092

5种Windows网络模型之select模型

  在Windows环境下用C语言实现CS模型中我们详细介绍了网络通信中需要使用的几个函数并指出了最基本的CS模型存在的缺点,为了克服这些缺点,人们提出了select模型,select模型和CS模型相比有以下几个优势: 解决了基本CS模型中accept与recv函数等待连接和等待消息时程序的阻塞。 实现多个客户端连接,能够接收多个客户端的消息 select模型仅用于服务器端 1. select模型原理 每个客户端都有一个socket,服务器也有自己的socket,将所有的socket放进一个数据结构里

nthzduang_的博客 4326

解锁RK1126与SC132GS摄像头适配密码:技术与代码全解析

本文详细介绍了瑞芯微RK1126芯片与SC132GS摄像头的适配方法。首先分析了RK1126的四核Cortex-A7处理器、Mali-T860 GPU等硬件特性,以及SC132GS的130万像素、全局快门等技术参数。重点阐述了基于MIPI CSI接口的硬件连接原理和基于V4L2框架的软件驱动设计,并提供了完整的初始化、数据采集和图像处理代码实现。针对常见连接和图像质量问题给出了解决方案,展现了该组合在智能安防、工业检测等领域的应用潜力,为开发者提供了实用的技术参考。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1504

Winsock——select模型

Winsock提供的I/O模型一共有五种:select,WSAAsyncSelect,WSAEventSelect,Overlapped,Completion。1:select模型(选择模型)先看一下下面的这句代码:intiResult=recv(s,buffer,1024);这是用来接收数据的,在默认的阻塞模式下的套接字里,recv会阻塞在那里,直到套接字连接上有数据可读,把数据读到buffer

ontheway的专栏 789

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WinSock IO模型一: select 模型

Select模型是最常见的I/O模型。 使用 int select( int nfds , fd_set FAR* readfds , fd_set FAR* writefds,fd_set FAR* exceptfds,const struct timeval FAR * timeout ) ; 函数来检查你要调用的Socket套接字是否已经有了需要处理的数据。 select包含三个

人生代码,代码人生。。。 780

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Winsock之select的用法

利用 select 函数来判断Socket上是否有数据可读,可写,防止程序在Socket处于阻塞模式中时,在一次 I/O 调用(如send或recv、accept等)过程中,被迫进入“锁定”状态;“锁定”状态,便可使用 FDSET 宏,将自己的套接字分配给 fdread 集合,再来调用 select。select 成功完成后,会在 fdset 结构中,返回刚好有未完成的 I/O操作的所有套接字句柄的总量。举个例子,假设我们想测试一个套接字是否“可读”,必须将自己的套接字增添到readfds集合中,

czj01288的博客 1126

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

浅谈WinSock异步I/O模型之select模型

Windows操作系统提供了五种I/O模型,分别是:1.选择(select)2.异步选择(WSAAsyncSelect)3.事件选择(WSAEventSelect)4.重叠I/O(Overlapped I/O)5.完成端口(Completion Port)下面我们来谈一谈最简单的选择模型:选择(select)模型是Winsock中最常见的 I/O模型。用途:如果我们想接受多个SOCKET的数据,该...

不知道起啥名称的博客 2046

winsock IO模型 select模型

两种I/O模式 * 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字 默认为阻塞模式。可以通过多线程技术进行处理。 * 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式使用 起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误。但功能强大。 比较容易想到的一种服务器模型就是采用一个主线程,负责监听客户...

逐步前行 199

winsock中select模型实战

选择(select)模型是Winsock中最常见的 I/O模型。核心便是利用 select 函数,实现对 I/O的管理!利用 select 函数来判断某Socket上是否有数据可读,或者能否向一个套接字写入数据,防止程序在Socket处于阻塞模式中时,在一次 I/O 调用(如se

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 2598

WinSock三种选择I/O模型

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

曾梦想仗剑走天涯 5721

WinSock I/O编程模型之——Select模型

最近,在系统地学习windows网络编程。虽然,已经浏览过select相关代码,查阅过很多书籍和资料,但是自始自终都是一副朦胧的姿态,一知半解,不知所以。为了更好的学习网络编程,决定将多线程和套接字I/O模型这块知识进行彻底的总结一下,书写一些测试代码,将这块堡垒攻下。当然自己不是什么大师,这方面知识相对匮乏,或多获少会存在一些歧义,希望能在不断的学习过程中,总结不足,及时补充。

tzwh_86的专栏 721

Winsock异步模式之一select 选择模式

      最近在学习winsock的过程中遇到种种问题,最突出的就是资料比较少,而且不是很详细(特别是异步IO模型这一块),很多资料都是费了九牛二虎之力才在网上找到只言片语(哎,很多资料说的都不是特别清楚)。为了巩固我的学习成果,同时也是为了给后来者提供一点点的帮助,我决定把我的学习心得以及对winsock五种异步模式的理解记录下来。当然我对自己的要求是:不求面面俱到,但要让大部分人看懂。 

Style_2009的专栏 3057

winsock i/o的select模型

本文部分截取他人博客,自己总结完成,附带各自链接:http://blog.youkuaiyun.com/yunboy4/archive/2009/09/18/4566124.aspxhttp://dev.youkuaiyun.com/article/82132.shtmhttp://uestczly.blog.163.com/blog/static/111354231200924105116788/htt

jielidu的专栏 2675
上一篇: Winsock学习笔记2:WSAAsyncSelect模型
下一篇: WinSock学习笔记4:WSAEventSelect模型
dropme
博客等级 码龄24年 16粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值