关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

转载 2012年03月31日 09:09:27

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 <0:出错,=0:连接关闭,>0接收到数据大小,特别:返回值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的,继续接收。只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会阻塞着读,因此需要 循环读取

2、阻塞模式与非阻塞模式下write的返回值各代表什么意思?有没有区别?

阻塞与非阻塞write返回值没有区分,都是 <0:出错,=0:连接关闭,>0发送数据大小,特别:返回值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的,继续发送。只是阻塞模式下write会阻塞着发送数据,非阻塞模式下如果暂时无法发送数据会返回,不会阻塞着 write,因此需要循环发送

3、阻塞模式下read返回值 < 0 && errno != EINTR &&amp; errno != EWOULDBLOCK && errno != EAGAIN时,连接异常,需要关闭,read返回值 < 0 && (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)时表示没有数据,需要继续接收,如果返回值大于0表示接送到数据。 

非阻塞模式下read返回值 < 0表示没有数据,= 0表示连接断开,> 0表示接收到数据。 

这2种模式下的返回值是不是这么理解,有没有跟详细的理解或跟准确的说明? 

4、阻塞模式与非阻塞模式下是否send返回值 < 0 && (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)表示暂时发送失败,需要重试,如果send返回值 <= 0, && errno != EINTR &&amp; errno != EWOULDBLOCK && errno != EAGAIN时,连接异常,需要关闭,如果send返回值 > 0则表示发送了数据?send的返回值是否这么理解,阻塞模式与非阻塞模式下send返回值=0是否都是发送失败,还是那个模式下表示暂时不可发送,需要 重发?

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值      2、阻塞模式与非阻塞模式下...
  • abcd1f2
  • abcd1f2
  • 2015年05月08日 16:25
  • 2570

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值      2、阻塞模式与非阻塞模式下...
  • gettogetto
  • gettogetto
  • 2017年03月09日 09:40
  • 194

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值 2、阻塞模式与非阻塞模式下writ...
  • shanlu9
  • shanlu9
  • 2014年03月26日 18:19
  • 477

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值  2、阻塞模式与非阻塞模式下wr...
  • u010178308
  • u010178308
  • 2017年06月23日 17:14
  • 108

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

recv: 阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小, 特别:非阻塞模式下返回 值  只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会阻塞着读,因此需要 ...
  • li2572889641
  • li2572889641
  • 2017年06月23日 22:58
  • 138

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区 别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值 ...
  • rethyx
  • rethyx
  • 2013年12月26日 11:11
  • 334

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值 2、阻塞模式与非阻塞模式下wr...
  • zhu2695
  • zhu2695
  • 2013年05月02日 18:08
  • 517

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

转自:http://www.cnblogs.com/lijunjie/articles/1759688.html 1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻...
  • wangfeng2500
  • wangfeng2500
  • 2016年02月13日 11:11
  • 270

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值  2、阻塞模式与非阻...
  • xiongping_
  • xiongping_
  • 2016年05月04日 09:59
  • 203

关于socket阻塞与非阻塞情况下的recv、send、read、write返回值

1、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值  2、阻塞模式与非阻...
  • chen19921212
  • chen19921212
  • 2014年01月28日 23:02
  • 390
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
举报原因:
原因补充:

(最多只允许输入30个字)