select多个客户端连接,传输数据时只能顺序传输产生原因

1. 场景描述

即A先连接,B后连接,只能先A后B依次输入数据,服务端依次读取数据
在这里插入图片描述
在这里插入图片描述
这是因为进行循环遍历lfd之后的描述符时,没有判断文件描述符i是否在newset集合中

//cfd发生变化
for(int i=lfd+1;i<=maxfd;i++){printf("i num = %d\t",i);//这里这里//如果没有进行FD_ISSET判断就会出现上述情况if(FD_ISSET(i,&newset)){char buf[1024]="";int ret=Read(i,buf,sizeof(buf));if(ret<0){perror("");close(i);FD_CLR(i,&oldset);}else if(ret==0){printf ("client close\n");close(i);FD_CLR(i,&oldset);}else{printf("write  %s",buf);}}}

2. 为什么需要进行FD_ISSET判断呢?

以上述代码为例,当FD_ISSET返回值为1时,表明文件描述符i处于就绪状态,可以进行IO操作
我们修改这几行代码就可很清晰看出,每次都是顺序循环所有的文件描述符,如果没有FD_ISSET判断,系统就会等待该文件描述符响应,直到可以进行后续操作为止

for(int i=lfd+1;i<=maxfd;i++){printf("未判断:i num = %d\n",i);if(FD_ISSET(i,&newset)){printf("判断:i val =%d\n",i);...}

在这里插入图片描述
上述例子中源代码

https://gitee.com/baimuyz/gomoku-project/blob/master/NW/select_1.c

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

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

相关文章

Matplotlib | 绘制柱状图

简介 安装 Matplotlib 开始绘制 简单柱状图 改变颜色 改变纹理 改变边框样式 改变透明度 改变柱子宽度 改变图表标题 ​编辑 并列柱状图 横向柱状图 堆叠柱状图 更多函数 简介 柱状图&#xff08;Bar chart&#xff09;&#xff0c;是一种以长方形的长度为变量的…

黑白群晖激活AME(Advanced Media Extention)

黑群晖激活Advanced Media Extensions&#xff08;AME&#xff09;解码HEVC视频和HEIC图片 声明&#xff1a;此教程在正版群晖系统中进行的操作&#xff0c;虽然也能用于非正版系统中AME的安装&#xff0c;但是在非正版系统中安装AME属于破解行为&#xff0c;对系统造成的影响和…

这里一定有你不知道的VS调试技巧

目录 使用环境&#xff1a;Visual Studio 2022,如无特殊说明&#xff0c;都是在Debug、x64环境下编译 一.什么是BUG 二.调试快捷键 F9&#xff1a;创建断电或取消断点 条件断点&#xff1a;满足这个条件才触发 F5&#xff1a;启动调试&#xff0c;经常⽤来直接跳到下⼀个断…

20 - grace数据处理 - 地下水储量计算过程分解 - 地下水储量计算

20 - grace数据处理 - 地下水储量计算过程分解 - 地下水储量计算 0 引言1 地下水储量变化计算过程0 引言 由水平衡方程可以将地下水储量的计算过程分解为3个部分,第一部分计算陆地水储量变化、第二部分计算地表水储量变化、第三部分计算冰后回弹改正、第四部分计算地下水储量变…

Vue:Bin Code Editor格式化JSON编辑器

最终效果如下图所示&#xff0c; Bin Code Editor安装 npm或yarn安装命令如下&#xff0c; npm i bin-code-editor -S # or yarn add bin-code-editor 组件注册 全局注册 在 main.js 中写入导入以下内容&#xff0c; import Vue from vue; import CodeEditor from bin-cod…

服务器数据恢复—异常断电导致ESXi虚拟机无法启动的数据恢复案例

服务器数据恢复环境&#xff1a; 某大厂PS4000服务器&#xff0c;服务器上部署VMware ESXi虚拟化平台。 服务器故障&#xff1a; 机房断电&#xff0c;重启后服务器中的某台虚拟机不能正常启动。管理员查看虚拟机配置文件&#xff0c;发现无法启动的虚拟机的配置文件除了磁盘文…

【每日刷题】Day53

【每日刷题】Day53 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1019. 链表中的下一个更大节点 - 力扣&#xff08;LeetCode&#xff09; 2. 116. 填充每个节点的下一…

Exce 两列一组对齐呈现,缺失补 0

Excel 里有 多 组数据&#xff0c;每组 2 列&#xff0c;每组长度不同。第 1 列是编号&#xff0c;列之间的编号有重复。 ABCDEFGH1Mass10Mass11Mass12Mass132802200581309088146532802225938133306824779282975598142002482273148413154988335698822331305832720485110460842…

计算机考研|408 值得选择吗?有哪些优势?

408当然非常值得报考&#xff0c;但是现在的408已经卷麻了&#xff01; 现在越来越多的学校改考408&#xff0c;光今年就有6所发布通知&#xff0c;宣布改考408&#xff0c;分别是&#xff1a; 这对考408的学生肯定是好消息&#xff0c;后面可能还会有学校陆续改考&#xff0c;…

一、实现一个简单的 Google Chrome 扩展程序

目录 &#x1f9ed; 效果展示 # 图示效果 a. 拓展程序列表图示效果&#xff1a; b. 当前选项卡页面右键效果&#xff1a; c. 拓展程序消息提示效果&#xff1a; &#x1f4c7; 项目目录结构 # 说明 # 结构 # 文件一览 ✍ 核心代码 # manifest.json # background.j…

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第五套

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第五套 部分题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09;&#xff08;共十套&#xff0c;每套四十题选择题&#xff09;获取&#xff08;WX:…

java期末细节知识整理(一)

1.java程序的执行过程&#xff1a;先编译后解释。也就是我们在idea写的文件叫做java源文件&#xff08;.java结尾的文件&#xff09;&#xff0c;经过编译器会生成字节码文件&#xff08;.class结尾的文件&#xff09;&#xff0c;再通过解释器进行实现 2.栈用来存储引用类型的…

易语言本地IP一键切换程序(附带源码)

易语言本地IP一键切换程序 效果图部分源码源码领取下期更新预报 效果图 部分源码 .判断开始 (单选框1.选中 &#xff1d; 真)标签5.标题 &#xff1d; #换行符 &#xff0b; “正在切换IP.”.如果真 (运行 (“netsh interface ip set address ” &#xff0b; #引号 &#xff…

PHP火狼大灌篮游戏源码微信+手机wap源码带控制

使用此接口可以实现支付宝、QQ钱包、微信支付与财付通的即时到账&#xff0c;免签约&#xff0c;无需企业认证。PHP易支付源码&#xff0c;免签约不需要企业的支付平台源码&#xff0c;彩虹第三四方在线支付系统源码,易支付token合作者商户申请源码&#xff0c;app和网页都可以…

ubuntu--Linux运行时格式

Linux运行时格式 \r 错误 用vim打开那个执行错误的 sh脚本文件 进入最后一行模式下 :set ff显示 fileformatdos 解决方法 : :set ffunix查看是否更改 : :set ff结果 : 保存退出即可 :x运行, 没有出错 * Author: cpu_code * Date: 2020-07-29 19:07:52 * LastEditTime: 2020…

HTTP --tcp

TCP TCP连接 tcp/ip是全球计算机以及网络设备都在使用的一种常见的分组交换网络分层协议集&#xff0c;客户端可以打开一条tcp/ip连接&#xff0c;连接到可能运行在世界各地的服务器应用程序&#xff0c;一旦连接建立起来了&#xff0c;在客户端和服务器的计算机之间交换的报…

el-date-picker的使用,及解决切换type时面板样式错乱问题

这里选择器的类型可以选择日月年和时间范围&#xff0c;根据类型不同&#xff0c;el-date-picker的面板也展示不同&#xff0c;但是会出现el-date-picker错位&#xff0c;或者面板位置和层级等问题。 源代码&#xff1a; <el-selectv-model"dateType"placeholder&…

BOOST_SREATCH

BOOST Boost是一个由C社区开发的开源库&#xff0c;为C语言标准库提供扩展。这个库由C标准委员会库工作组成员发起&#xff0c;旨在提供大量功能和工具&#xff0c;帮助C开发者更高效地编写代码。Boost库强调跨平台性和对标准C的遵循&#xff0c;因此与编写平台无关&#xff0…

如何防止商业秘密泄露?商业秘密保护措施有哪些?

商业秘密是企业核心竞争力的关键所在&#xff0c;其保密性直接关系到企业的生存和发展。 因此&#xff0c;防止商业秘密泄露&#xff0c;确保商业秘密的安全至关重要。 本文将探讨如何有效防止商业秘密泄露&#xff0c;并重点介绍域智盾软件作为解决方案&#xff0c;在商业秘密…

Jvm(一)之栈、堆、方法区

前言-与正文无关 生活远不止眼前的苦劳与奔波&#xff0c;它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&#xff0c;我们往往容易陷入工作的漩涡&#xff0c;忘记了停下脚步&#xff0c;感受周围的世界。让我们一起提醒自己&#xff0c;要适时放慢脚步…