Linux TCP 阻塞套接字使用 EAGAIN 返回零

Linux TCP blocking socket is returning zero with EAGAIN

我有一个阻塞的 TCP 套接字作为用 C++ 实现的 TCP 客户端的一部分。它正在尝试使用套接字描述符上的 ::read() 调用来读取数据。我看到非常频繁的情况,其中读取 returns 的值为 0,但 errno 的值为 EAGAIN.

在阻塞套接字的情况下,EAGAIN 是什么意思?

我了解非阻塞套接字的功能,但不清楚阻塞套接字。

我知道这可能是因为遇到读取超时,但我目前没有设置读取超时值。

在 linux 个 TCP 套接字的情况下,默认读取超时值是多少?

where the read returns with a value of 0

这意味着对等方已正常关闭其连接端。您需要关闭该连接的套接字描述符。不用检查errno,在这种情况下是没有意义的。它只有在 read() 返回 < 0 时才有意义。