文章目录

  • 第1关:阻塞
  • 第2关:非阻塞
  • 第3关:阻塞与非阻塞切换

第1关:阻塞

#include <sys/socket.h> // 包含套接字函数库
#include <fcntl.h>
void setsocketblock(int socketID)
{/*******Begin*********/int flags = fcntl (socketID, F_GETFL, 0);//检查当前属性是否为BLOCK,否则将其设置为BLOCKif (flags & O_NONBLOCK){fcntl (socketID, F_SETFL, flags&~O_NONBLOCK);int recvTimeout = 5 * 1000;setsockopt(socketID,SOL_SOCKET,SO_RCVTIMEO,(char *)&recvTimeout,sizeof(int));}
/********End*********/
}

第2关:非阻塞

#include <sys/socket.h> // 包含套接字函数库
#include <fcntl.h>
void setsocketunblock(int socketID)
{/*******Begin*********/int flags = fcntl (socketID, F_GETFL, 0);//检查当前属性是否为NON_BLOCK,否则将其设置为NON_BLOCKif (0 == (flags & O_NONBLOCK)){fcntl (socketID, F_SETFL, flags|O_NONBLOCK);}
/********End*********/
}

第3关:阻塞与非阻塞切换

#include <sys/socket.h> // 包含套接字函数库
#include <fcntl.h>
void setsocketunblock(int socketID)
{/*******Begin*********/int flags = fcntl (socketID, F_GETFL, 0);//检查当前属性是否为NON_BLOCK,否则将其设置为NON_BLOCKif (0 == (flags & O_NONBLOCK)){fcntl (socketID, F_SETFL, flags|O_NONBLOCK);}
/********End*********/
}
void setsocketblock(int socketID)
{/*******Begin*********/int flags = fcntl (socketID, F_GETFL, 0);//检查当前属性是否为BLOCK,否则将其设置为BLOCKif (flags & O_NONBLOCK){fcntl (socketID, F_SETFL, flags&~O_NONBLOCK);int recvTimeout = 5 * 1000;setsockopt(socketID,SOL_SOCKET,SO_RCVTIMEO,(char *)&recvTimeout,sizeof(int));}
/********End*********/
}

Linux网络编程之阻塞与非阻塞相关推荐

  1. linux网络编程--阻塞与非阻塞

    linux网络编程--阻塞与非阻塞 建立连接 接受连接 无阻塞的设置方式 read() write() 读操作 写操作 Linux fcntl函数详解 功能描述 函数原型 fcntl()函数五种功能 ...

  2. Linux Socket网络编程UDP、TCP 阻塞与非阻塞 断线重连机制

    三种非阻塞模式的方法: (1) fcntl函数 int Mode = fcntl(sockfd, F_GETFL, 0);       //获取文件的Mode值     fcntl(sockfd, F ...

  3. 【Linux网络编程学习】阻塞、非阻塞、同步、异步以及五种I/O模型

    文章目录 1. 基本概念 1.1 阻塞与非阻塞 1.2 同步与异步 1.3 为什么没有"异步阻塞" 2. 五种IO模型 2.1 阻塞 blocking 2.2 非阻塞 non-bl ...

  4. Linux网络编程 | IO模型 :阻塞IO、非阻塞IO、信号驱动IO、异步IO、多路复用IO

    目录 IO模型 阻塞与非阻塞 同步与异步 阻塞IO 非阻塞IO 信号驱动IO 多路复用IO 异步IO IO模型 根据各自的特性不同,IO模型被分为阻塞IO.非阻塞IO.信号驱动IO.异步IO.多路复用 ...

  5. C++网络编程快速入门(三):阻塞与非阻塞式调用网络通信函数

    目录 阻塞与非阻塞定义 send与recv connect 一些问题 为什么要将监听socket设置为非阻塞 阻塞与非阻塞定义 阻塞模式指的是当前某个函数执行效果未达预期,该函数会阻塞当前的执行线程, ...

  6. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)...

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程并行与并发同步与异步阻塞与非阻塞CPU密集型与IO密集型 线程与进程 进程 前言 ...

  7. (转载)网络编程释疑之:同步,异步,阻塞,非阻塞

    一讲到网络编程的I/O模型,总会涉及到这几个概念.问了很多人,没几个能清晰地讲出他们之间的区别联系,甚至在网络上也有很多不同的观点,也不知是中国文字释义的博大精深,还是本来这几个概念就是绕人不倦.今天 ...

  8. 网络编程释疑之:同步,异步,阻塞,非阻塞

    一讲到网络编程的I/O模型,总会涉及到这几个概念.问了很多人,没几个能清晰地讲出他们之间的区别联系,甚至在网络上也有很多不同的观点,也不知是中国文字释义的博大精深,还是本来这几个概念就是绕人不倦.今天 ...

  9. 网络编程中同步与异步,IO阻塞与非阻塞总结

    IO操作分两个阶段 第1个阶段:等待数据准备好(从外部设备磁盘或网络读到内核缓冲区): 第2个阶段:采用系统调用(内核进程),操作系统内核将数据从内核缓冲区读到用户空间. 第1阶段花费的时间远远大于第 ...

最新文章

  1. 设置VSCode代码编辑器右侧的Minimap代码缩略图滚动条切换显示、隐藏的快捷键Alt+M
  2. POJ1149 PIGS(最大流)
  3. numpy(3)-numpy.random.random() ,random_sample()连续均匀分布
  4. Hadoop报错:All specified directories are failed to load.
  5. mysql小写转大写UPPER() 和大写转小写LOWER()
  6. 45请求转发和请求重定向区别
  7. 【BZOJ2084】【洛谷P3501】[POI2010]ANT-Antisymmetry(Manache算法)
  8. 正则判断手机号是不是11位
  9. linux命令th,Linux 第13天 文本操作命令
  10. Module LUT6 is not defined
  11. window下c语言c s通信,c++ Windows Socket实现最简单的C/S网络通信(TCP)
  12. Linux下内存情况分析
  13. yoga14s amd r7-4800h虚拟机安装黑苹果记录
  14. 树莓派开启 wifi 热点
  15. 职场语录:新人,没人会告诉你的职场潜规则
  16. Lenovo X61鸟枪换炮之更换大硬盘
  17. ireport导出Excel报表的实现
  18. 如何制作启动U盘安装系统?
  19. NCRE | 三级网络技术笔记
  20. php资产管理,php固定资产管理系统

热门文章

  1. 谣言检测论文精读——3.WWW2018-Detect Rumor and Stance Jointly by Neural Multi-task Learning
  2. 基于Flutter实现的仿开眼视频App
  3. Oracle表空间的管理方式(LMT、DMT)--本地和字典管理
  4. win10计算机升级系统,教你用电脑管家升级Win10系统?升级Win10系统的简单方法
  5. 【Mac 教程系列第 6 篇】如何显示隐藏文件以及如何隐藏文件
  6. 使用CocosCreator+JS 完成Flappybrid(像素鸟)小游戏
  7. java实现洋葱路由_警惕新型“洋葱”勒索软件
  8. $.parser.parse()是什么意思
  9. Windows 下串口编程
  10. 清除终端 Terminal 的代码 快捷键(清屏)