网络编程之阻塞与非阻塞的理解

简介: 网络编程之阻塞与非阻塞的理解

linux网络编程中 connect,send,recv 关于阻塞与非阻塞的理解

1,send,recv如果非阻塞,会立即返回,但每次返回的结果是不确定的,有可能一次发送或者接收完成

也有可能需要多次,所以需要在一个循环中,多次发送或者接收,直到数据发送或者接收完毕。

2,send,recv如果阻塞,可以设置超时时间,阻塞的话会一直等到发送或者接收完毕所有数据才会返回,

防止主线程阻塞,一般需要另起线程。

综上所述:对于IO或者网络操作相关,阻塞的话,需要在异步线程中执行,设置相应超时时间

非阻塞的话,会立即返回,但返回结果是不确定的,所以需要轮询,判断数据收发完毕为止。

对于网络编程 connect之前设置非阻塞,connect会立即返回,connect之后,设置阻塞,后面的send ,recv就是阻塞模式.


相关文章
|
6月前
|
Java
如何理解网络阻塞 I/O:BIO
如何理解网络阻塞 I/O:BIO
|
6月前
|
负载均衡 NoSQL 网络协议
网络中的阻塞与非阻塞以及reactor模型
网络中的阻塞与非阻塞以及reactor模型
43 0
|
6月前
|
存储 网络协议 Java
深入理解Linux网络——内核与用户进程协作之同步阻塞方案(BIO)
在上一部分中讲述了网络包是如何从网卡送到协议栈的(详见深入理解Linux网络——内核是如何接收到网络包的),接下来内核还有一项重要的工作,就是在协议栈接收处理完输入包后要通知到用户进程,如何用户进程接收到并处理这些数据。
|
3月前
|
缓存 算法 网络性能优化
解决网络延迟和阻塞,有它,不服都不行!
解决网络延迟和阻塞,有它,不服都不行!
|
6月前
|
网络协议 NoSQL Linux
非阻塞socket网络编程之数据收发完整代码示例
非阻塞socket网络编程之数据收发完整代码示例
|
算法 网络架构
m基于MATLAB的弹性网络性能仿真与分析,包括频谱利用率和业务阻塞率
m基于MATLAB的弹性网络性能仿真与分析,包括频谱利用率和业务阻塞率
222 0
|
数据采集 缓存 算法
m基于多属性决策判决算法的异构网络垂直切换matlab性能仿真,对比网络吞吐量,网络负载,平均切换次数,阻塞率,回报值
m基于多属性决策判决算法的异构网络垂直切换matlab性能仿真,对比网络吞吐量,网络负载,平均切换次数,阻塞率,回报值
210 0
|
大数据 开发者
网络编程:IO 通信模型--阻塞等概念|学习笔记
快速学习网络编程:IO 通信模型--阻塞等概念
113 0
网络编程:IO 通信模型--阻塞等概念|学习笔记
|
Linux
Linux网络编程之阻塞与非阻塞
Linux网络编程之阻塞与非阻塞
200 0
|
算法 Java Linux
JEP 尝鲜系列 3 - 使用虚线程进行同步网络 IO 的不阻塞原理
JEP 尝鲜系列 3 - 使用虚线程进行同步网络 IO 的不阻塞原理

热门文章

最新文章