socket阻塞和非阻塞有哪些不同

1. 建立连接

阻塞方式下,connect首先发送SYN请求到服务器,当客户端收到服务器返回的SYN的确认时,则connect返回,否则的话一直阻塞。

非阻塞方式,connect将启用TCP协议的三次握手,但是connect函数并不等待连接建立好才返回,而是立即返回,返回的错误码为EINPROGRESS,表示正在进行某种过程。

2. 接收连接

阻塞模式下调用accept()函数,而且没有新连接时,进程会进入睡眠状态,直到有可用的连接,才返回。

非阻塞模式下调用accept()函数立即返回,有连接返回客户端套接字描述符,没有新连接时,将返回EWOULDBLOCK错误码,表示本来应该阻塞。

3. 读操作

阻塞模式下调用read(),recv()等读套接字函数会一直阻塞住,直到有数据到来才返回。当socket缓冲区中的数据量小于期望读取的数据量时,返回实际读取的字节数。当socket的接收缓冲区中的数据大于期望读取的字节数时,读取期望读取的字节数,返回实际读取的长度。

对于非阻塞socket而言,socket的接收缓冲区中有没有数据,read调用都会立刻返回。接收缓冲区中有数据时,与阻塞socket有数据的情况是一样的,如果接收缓冲区中没有数据,则返回错误号为EWOULDBLOCK,表示该操作本来应该阻塞的,但是由于本socket为非阻塞的socket,因此立刻返回。遇到这样的情况,可以在下次接着去尝试读取。如果返回值是其它负值&#

socket阻塞和非阻塞相关推荐

  1. 将socket设置为非阻塞(non-blocking) - 艾子的日志 - 网易博客

    将socket设置为非阻塞(non-blocking) - 艾子的日志 - 网易博客 将socket设置为非阻塞(non-blocking) 2011-02-17 22:36:51|  分类: 默认分 ...

  2. Socket阻塞,非阻塞,同步,异步

    1.socket 阻塞,非阻塞(select) http://blog.csdn.net/piaojun_pj/article/details/5991968/ http://blog.chinaun ...

  3. linux socket 阻塞与非阻塞,同步与异步

    在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步/异步主要针对C端:  同步:       所谓同步,就是在c端发出 ...

  4. iphone开发之轻松搞定原生socket 编程,阻塞与非阻塞,收发自如

    iphone socket 开发 在iphone的平台下,要进行socket开发其实有很多种的方法,开源的库Asyncsocket,官方的CFSocket,还有BSD的socket. 这里要做一个简单 ...

  5. Socket阻塞与非阻塞,同步与异步、I/O模型

    [原文链接] 1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步:       所谓同步,就是在发出一 ...

  6. socket阻塞和非阻塞的区别

    socket阻塞和非阻塞的区别 简单点说: 阻塞就是干不完不准回来,    非组赛就是你先干,我现看看有其他事没有,完了告诉我一声 我们拿最常用的send和recv两个函数来说吧... 比如你调用se ...

  7. 从 Linux 源码看 Socket 的阻塞和非阻塞

    转载自 从 Linux 源码看 Socket 的阻塞和非阻塞 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情. 大部分高性能网络框架采用的是非阻塞模式.笔者这 ...

  8. socket的阻塞模式和非阻塞模式(send和recv函数在阻塞和非阻塞模式下的表现)

    socket的阻塞模式和非阻塞模式 无论是Windows还是Linux,默认创建socket都是阻塞模式的 在Linux中,可以再创建socket是直接将它设置为非阻塞模式 int socket (i ...

  9. socket阻塞与非阻塞,同步与异步

    转自:http://blog.csdn.net/hguisu/article/details/7453390 socket阻塞与非阻塞,同步与异步 作者:huangguisu 1. 概念理解 在进行网 ...

  10. java socket 阻塞模式_(四) 如何将socket设置为非阻塞模式

    1. windows平台上无论利用socket()函数还是WSASocket()函数创建的socket都是阻塞模式的: SOCKET WSAAPI socket(    _In_ int af,   ...

最新文章

  1. 移动端为何不使用click而模拟tap事件及解决方案
  2. 图解用Scientific Toolworks Understand分析Microsoft DirectX SDK (June 2010)自带D3D示例
  3. 苹果错误分析报告preferreuserinterface_数据分析的六个步骤,你做到了吗?
  4. ajax请求使用utf-8,Ajax,请求标头UTF-8到ISO字符集[重复]
  5. 熬了整整30天,java递归阶乘求和
  6. asp生成和导出excel和word数据源码和代码,简单好用(已经测试可以用)
  7. 富国基金:基金公司是如何进行数据架构规划与实践的
  8. IP的正则表达式 IP地址的正则表达式写法
  9. 如何提高自己的归纳总结能力?
  10. 2021年中国巴豆酸市场趋势报告、技术动态创新及2027年市场预测
  11. 未明学院:“我是女生,能做数据分析吗?”
  12. MAC下微信双开(一键命令)
  13. 确定权重方法之一:主成分分析
  14. 阿里云主机迁移 配置域名解析 顶级域名配置子域名
  15. java csrf_java – 如何在使用CSRF登录后启用Spring Secu...
  16. 做电商网站服务器在哪里,电商网站服务器如何选择
  17. 短视频软件开发——平台同质化如何破局
  18. 浅谈ERP系统实施后如何完善企业内部控制制度建设
  19. 9个相见恨晚的提升办公效率的网站!
  20. java版 SpringCloud 之Eclipse 教程

热门文章

  1. 超详细:实现过程-Linux 环境下的简易聊天室,采用CS模型,实现多客户端之间的稳定数据传输。--注册和登录(但之后会连续更新内容,直至全部实现)
  2. 【linux】Redhat Linux 关闭防火墙命令
  3. Linux下文件的过滤和查找
  4. 把spar的默认地址改成hdfs
  5. Vue created/mounted 异步获取不到data中的数据
  6. 解放双手,推荐一款 GitHub 星标 8.2k+的命令行软件管理器
  7. 无线通信课程简答题答案,你能解释几个?
  8. 方便面吃出老鼠 可怜的中国食品业啊。
  9. 输出魔方阵---C语言
  10. 手摸手教你做动态壁纸