socket编程:I/O模型
在TCP服务器编程那篇博客中,我们提到了更加优化连接方式,其实就是关于I/O的传输模型:
我们常见的几种I/O模型:
阻塞式I/O模型:
当进程进行数据传输连接的时候,只能够阻塞的等待数据的到来,而无法去干其他的事情,将服务进程的所有精力全部去应付当前连接;
图解:
2.非阻塞式I/O模型:
讲数据的等待响应变为轮询等待,当轮询失败是返回EMOULODBLOCK,然后一段时间后再次进行询问,成功就进入数据的复制。
图解;
3.信号响应I/O:
进程轮询进行,然后设置SIGIO的处理程序,当有数据访问的时候就进行响应,然后进行数据的复制处理,相当于钓鱼时候在鱼竿上绑了一个铃铛,听到消息才进行处理。
图解:
4.复用I/O模型:
利用其他的函数帮助多个监听,相当与一个进程能够对多个事件集进行响应传递,出现响应以后发生数据传输在调用recvfrom(传递数据)。相当于一个人掌控多个鱼竿,对当前鱼竿的所有事件集进行响应操作。
图解:
以上都是同步I/O模型,都是有自己,所属进程进行的数据响应。
转载于:https://blog.51cto.com/memory73/1783073
socket编程:I/O模型相关推荐
- linux系统udp通信程序,Linux UDP socket编程(UDP通讯模型) | C/C++程序员之家
Linux UDP socket编程(UDP通讯模型): UDPClient + UDPService. Linux下大多数网络程序都是基于TCP的,很少基于UDP,简单的通讯模型如下,开发时候备用! ...
- socket编程的select模型
在掌握了socket相关的一些函数后,套接字编程还是比较简单的,日常工作中碰到很多的问题就是客户端/服务器模型中,如何让服务端在同一时间高效的处理多个客户端的连接,我们的处理办法可能会是在服务端不停的 ...
- socket编程五种模型
客户端:创建套接字,连接服务器,然后不停的发送和接收数据. 比较容易想到的一种服务器模型就是采用一个主线程,负责监听客户端的连接请求,当接收到某个客户端的连接请求后,创建一个专门用于和该客户端通信的套 ...
- Socket编程5种模型——以代码说明一切,hhhhh
我会以一个回应反射式服务器(与<Windows网络编程>第八章一样)来介绍这五种I/O模型.我们假设客户端的代码如下(为代码直观,省去所有错误检查,以下同): #include < ...
- windows socket编程五种模型
客户端:创建套接字,连接服务器,然后不停的发送和接收数据. 比较容易想到的一种服务器模型就是采用一个主线程,负责监听客户端的连接请求,当接收到某个客户端的连接请求后,创建一个专门用于和该客户端通信的套 ...
- Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信)
1.AF_INET域与Socket通信 其是典型的TCP/IP四层模型的通信过程. (1)接收方与发送方依赖IP和port来标识,即,将本地socket绑定到对应的IP端口上: (2)发送数据时指定对 ...
- 【Linux Socket 编程入门】05 - 拉个骡子溜溜:TCP编程模型代码分析
(一) 看看以前学了啥 前面介绍了socket的分类,IP地址,端口号(port),常用的socket数据结构以及常用的函数.现在我们来看一个例子,看看socket编程究竟是什么. (二) 一图看懂客 ...
- linux socket编程epoll模型实现群发消息
1.实现功能 本代码主要实现了socket编程epoll模型实现多个客户端连接服务器,客户端可以进行群发消息和接收用户输入文本信息,然后发送该信息给服务器,服务器收到后发送应答信息.客户端接收并显示该 ...
- 转Go语言TCP Socket编程
授权转载: Tony Bai 原文连接: https://tonybai.com/2015/11/17/tcp-programming-in-golang/ Golang的主要 设计目标之一就是面向大 ...
最新文章
- yii2嵌入微信公众号支付
- 企业网络推广专员浅析企业网络推广后期网站优化重点因素有哪些?
- 深入cocos2d-x中的touch事件
- java web.xml_Java Web之XML基础
- centos部署mysql5.6免安装版
- Safari 时间格式转换 NAN 问题
- C++11 Lambda表达汇总总结
- python魔法方法和普通方法_Python魔法方法之属性访问详解!
- LitePal 数据库使用方法(最新2.0LitePal数据库适用)
- Docker 开启镜像加速 (网易和阿里)
- 小学计算机应用计划,小学计算机教学计划
- node-sass报错
- Java Runtime.exec() hangs
- STM32 PC13 PC14 PC15用作普通IO口
- java.lang.NoClassDefFoundError: com.yolanda.nohttp.NoHttp
- JS获取上周(自然周、最近七天)、上月(自然月、最近一个月)、全年的开始和结束日期
- Linux系统安装IonCube的方法详解教程
- ROS2之OpenCV基础代码对比foxy~galactic~humble
- 大转盘抽奖活动免费创建
- 金税三期很可怕?好会计对症下药!