非阻塞状态下recv返回值问题

recv函数非阻塞状态下没有数据返回值为0,如果客户端关闭返回值也是0,如何区别这两个状态呢?

阅读 3.9k
2 个回答

默认 recv 应该是阻塞的,当设置 MSG_DONTWAIT 或者套接字的描述符带有 O_NONBLOCK 选项,在没有数据情况下,应该返回的是 -1,并设置errno为 EAGAIN 或者 EWOULDBLOCK

非阻塞模式下,没有数据返回值是-1,并且错误码是EAGAIN or EWOULDBLOCK。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题