泸州市建设厅网站襄樊网站制作公司

pingmian/2026/1/21 23:22:19/文章来源:
泸州市建设厅网站,襄樊网站制作公司,制作免费网站,陕西网页制作最近在用socket编程#xff0c;用到select函数#xff0c;于是上网查找资料#xff0c;如下这篇是讲的比较详细易懂的#xff1a;Select在Socket编程中还是比较重要的#xff0c;可是对于初学Socket的人来说都不太爱用Select写程序#xff0c;他们只是习惯写诸如 connect…最近在用socket编程用到select函数于是上网查找资料如下这篇是讲的比较详细易懂的Select在Socket编程中还是比较重要的可是对于初学Socket的人来说都不太爱用Select写程序他们只是习惯写诸如 connect、accept、recv或recvfrom这样的阻塞程序所谓阻塞方式block顾名思义就是进程或是线程执行到这些函数时必须等待某个事件的发生如果事件没有发生进程或线程就被阻塞函数不能立即返回。可是使用Select就可以完成非阻塞所谓非阻塞方式non- block就是进程或线程执行此函数时不必非要等待事件的发生一旦执行肯定返回以返回值的不同来反映函数的执行情况如果事件发生则与阻塞方式相同若事件没有发生则返回一个代码来告知事件未发生而进程或线程继续执行所以效率较高方式工作的程序它能够监视我们需要监视的文件描述符的变化情况——读写或是异常。下面详细介绍一下Select的函数格式(我所说的是Unix系统下的伯克利socket编程和windows下的有区别一会儿说明)int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct tim *timeout);先说明两个结构体第一struct fd_set可以理解为一个集合这个集合中存放的是文件描述符(file descriptor)即文件句柄这可以是我们所说的普通意义的文件当然Unix下任何设备、管道、FIFO等都是文件形式全部包括在内所以毫无疑问一个socket就是一个文件socket句柄就是一个文件描述符。fd_set集合可以通过一些宏由人为来操作比如清空集合FD_ZERO (fd_set *)将一个给定的文件描述符加入集合之中FD_SET(int ,fd_set *)将一个给定的文件描述符从集合中删除FD_CLR(int ,fd_set*)检查集合中指定的文件描述符是否可以读写FD_ISSET(int ,fd_set* )。一会儿举例说明。第二struct tim是一个大家常用的结构用来代表时间值有两个成员一个是秒数另一个是毫秒数。具体解释select的参数int maxfdp是一个整数值是指集合中所有文件描述符的范围即所有文件描述符的最大值加1不能错在Windows中这个参数的值无所谓可以设置不正确。fd_set *readfds是指向fd_set结构的指针这个集合中应该包括文件描述符我们是要监视这些文件描述符的读变化的即我们关心是否可以从这些文件中读取数据了如果这个集合中有一个文件可读select就会返回一个大于0的值表示有文件可读如果没有可读的文件则根据timeout参数再判断是否超时若超出timeout的时间select返回0若发生错误返回负值。可以传入NULL值表示不关心任何文件的读变化。fd_set *writefds是指向fd_set结构的指针这个集合中应该包括文件描述符我们是要监视这些文件描述符的写变化的即我们关心是否可以向这些文件中写入数据了如果这个集合中有一个文件可写select就会返回一个大于0的值表示有文件可写如果没有可写的文件则根据timeout参数再判断是否超时若超出timeout的时间select返回0若发生错误返回负值。可以传入NULL值表示不关心任何文件的写变化。fd_set *errorfds同上面两个参数的意图用来监视文件错误异常。struct tim* timeout是select的超时时间这个参数至关重要它可以使select处于三种状态第一若将NULL以形参传入即不传入时间结构就是将select置于阻塞状态一定等到监视文件描述符集合中某个文件描述符发生变化为止第二若将时间值设为0秒0毫秒就变成一个纯粹的非阻塞函数不管文件描述符是否有变化都立刻返回继续执行文件无变化返回0有变化返回一个正值第三timeout的值大于0这就是等待的超时时间即 select在timeout时间内阻塞超时时间之内有事件到来就返回了否则在超时后不管怎样一定返回返回值同上述。返回值负值select错误 正值某些文件可读写或出错 0等待超时没有可读写或错误的文件在有了select后可以写出像样的网络程序来举个简单的例子就是从网络上接受数据写入一个文件中。例子main(){int sock;FILE *fp;struct fd_set fds;struct tim timeout{3,0}; //select等待3秒3秒轮询要非阻塞就置0char buffer[256]{0}; //256字节的接收缓冲区while(1){FD_ZERO(fds); //每次循环都要清空集合否则不能检测描述符变化FD_SET(sock,fds); //添加描述符FD_SET(fp,fds); //同上maxfdpsockfp?sock1:fp1;    //描述符最大值加1switch(select(maxfdp,fds,fds,NULL,timeout))   //select使用 {case -1: exit(-1);break; //select错误退出程序case 0:break;  //再次轮询default:if(FD_ISSET(sock,fds)) //测试sock是否可读即是否网络上有数据{recvfrom(sock,buffer,256,.....);//接受网络数据if(FD_ISSET(fp,fds)) //测试文件是否可写fwrite(fp,buffer...);//写入文件buffer清空;}// end if break;}// end switch}//end while}//end main WEB:http://blog.sina.com.cn/s/blog_494597e30100dr5h.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87021.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站规划建设与管理维护智能小程序是什么

前置知识:可变参数 就是一种特殊参数,定义在方法 构造器的形参列表里,格式是:数据类型...参数名称; 可变参数的特点和好处 特点:可以不传数据给它;可以传一个或者同时传多个数据给它&#xff…

美团招聘网站开发有没有免费资源

一、异步(1)当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。比如iOS类库中的NSURLConnectioin中使用代理的方式就是异步。(2)iOS类库中的异步调用提供自动的多线程并发&#xff0…

太原市住房和城乡建设局的网站首页seo顾问服务公司

Spring Boot下无法加载主类 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 我什么也没有改,启动服务报错如题:找不到或无法加载主类 解决:什么也不…

洛阳兼职网站微信朋友圈广告在哪里做

字节码检测库cglib是许多众所周知的Java框架(例如Hibernate (现在不再 ))或Spring最受欢迎的选择,它们可以完成肮脏的工作。 字节码检测允许在Java应用程序的编译阶段之后操作或创建类。 由于Java类在运行时动态链接&a…

潍坊网站建设科技有限公司建设网站的申请信用卡吗

大家肯定为this指向的问题感到烦恼,接下来让我为大家介绍六种改变this指向的方法吧! 1、在指定位置定义this存为变量 // 在指定位置定义this存为变量// 我们可以自己存一个变量let _this thisconst obj {fun(){console.log(_this) //window}}obj.fun(…

网站怎么做下拉刷新页面数据深圳定制网站建设服务公司

vector就是我们之前数据结构学的顺序表,这篇博客就是说一说它的简单使用和底层实现 文章目录 简单使用模拟实现 简单使用 首先,我们看看它的构造函数 我们比较常用的也就是第二种,就是第一个参数是要存的数据个数,第二个是要填…

建设营销网站时以什么为导向建网站要几个域名

在当今信息化社会,公司信息的安全性和保密性显得尤为重要。一旦公司信息泄露,不仅会对公司的经营造成严重影响,还可能引发法律纠纷。因此,采取有效的措施来防止公司信息泄露是非常必要的。以下是一些具体的措施: 部署洞…

大型网站开发人员360建站官网

01安卓手机无法打开.jio文件,需要在电脑上安装久其通用数据管理平台软件打开。进入软件首页,点击菜单栏“装入”按钮,弹出“数据装入向然后导”,单击文件夹图标,在弹出“打开”窗口中选择装入数据的路径,单…

去哪里可以做网站建设网站的页面设计

由于我们的内衣、内裤和袜子等等贴身小件衣物的清洁频率比一般的衣物要高。而且,如果我们人工手洗的话,不仅会大大浪费了我们的时间,而且还不能进行对这些贴身的以为进行深层消毒和除菌。这种情况下,就得需要一台专门用于清洗内衣…

asp.net当前网站路径网站推广的案例

1 svg-pan-zoom 概述 svg-pan-zoom 是一个轻量级、高性能且易于使用的 JavaScript 库,专为增强 SVG 图像的浏览体验而设计。它提供了平移和缩放功能,使用户能够无缝探索大型或复杂的 SVG 图形。这个库允许用户对SVG图像进行交互操作,包括缩放…

山西 网站制作seo引擎搜索网站关键词

概述 本文直在说明将QString类型的变量转换为const char *类型。 实现 可以采用下面的方式来实现: QString.toStdString().c_str(); 示例 下面是一个示例: const QString msg "nis你好!"; const char * str msg.toStdStrin…

成都市温江建设局网站新建网站网络空间

文章目录 一、定义:【1】Less【2】Sass 二、相同之处:三、区别:【1】实现方式:【2】实现方式:【3】混合(Mixins):【4】解析方式:【5】变量的作用域:【6】比起Less 一、定义: 【1】Less Less 是…

网站建设干货用别人的资源做网站

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1计算最大值和最小值 4.2计算亮度L 4.3计算饱和度S 4.4计算色调H 5.算法完整程序工程 1.算法运行效果图预览 将FPGA结果导入到MATLAB显示效果: 2.算法运行软件版本 Vivado…

作风建设年活动网站html5网页设计论文

一、UI设计师 UI设计师的主要工作内容 1.什么是UI设计师 是现代的一种新兴职业,指从事对软件的人机交互、操作逻辑、界面美观的整体设计工作。 随着科技产品的日益更新和智能手机的普及,社会对软件设计类人才(UI设计师)提…

网站建设需要怎么做站长工具关键词挖掘

《计算机组成原理》试题集一、选择题在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。1.反映计算机基本功能的是( )A)操作系统 B)系统软件 C)指令系统 D)数据库系统2.若二进制数为1111.101,则…

网站建设项目分工公司在网站做广告怎么做分录

【加密相册】隐私协议 1.个人信息的收集和使用 我们的应用程序不会收集用户的个人信息,包括姓名、地址、电子邮件地址、电话号码等。我们不会追踪用户的位置信息或共享用户的个人信息。 2. 非个人化信息的收集和使用 我们的应用程序可能会收集一些非个人化信息&a…

电子商城网站开发价格辽宁建设工程信息网新平台

在近期开展的 KubeCon China 2019 上,阿里云将陆续为全球用户分享阿里巴巴超大规模云原生落地实践、云原生前沿技术与应用包括 OpenKruise 开源项目、开放云原生应用中心(Cloud Native App Hub),同时将重磅发布边缘容器、云原生应…

贵阳网站建设设计公司哪家好福州网站建设兼职

自定义一个titlebar窗口, 不带任何资源、QSS,纯代码 1. 设置主窗口 透明背景,让central_widget透明方式显示,给后续main添加dropshadow效果,用于放置实际的业务控件。 setWindowFlags(Qt::FramelessWindowHint | Qt…

替人做赌彩网站做网站赚钱 百度网盟

1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud Alibaba 致力于提供分布式应用服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托…

徐州市政建设集团公司网站墙绘做网站推广有作用没

一:数据量大了以后,单机解析或者生成文件的效率就很低,需要通过集群处理 机构过来的文件:我们先对文件进行分片,在利用集群集群处理分片文件。给机构文件:分库分表数据,每个分表生成一个分片文…