首页 > 解决方案 > 当accept() 失败且不是EAGAIN 或EWOULDBLOCK(非阻塞IO)时该怎么办?

问题描述

我正在用 C++ 编写一个服务器程序。我使用带有 poll() 的非阻塞 POSIX 套接字。当服务器套接字可读时,我的代码开始接受()连接。当 accept() 因 EAGAIN 或 EWOULDBLOCK 失败时,执行返回到 poll()。

在我在 Internet 上看到的示例中,如果 accept() 失败且不是 EAGAIN 或 EWOULDBLOCK,它们会终止服务器。我想知道我是否真的应该这样做。当 accept() 失败时,客户端可能做了一些未定义的事情;这是终止我的服务器程序的理由吗?

总而言之,我的问题是,当 accept() 在没有 EAGAIN 或 EWOULDBLOCK 的情况下失败时,我应该如何处理。

谢谢你。

标签: linuxsocketsposixnonblocking

解决方案


推荐阅读