如何在读取完成之前远程服务器关闭套接字时如何处理C中的套接字读取?

读取调用上的客户端块等待读取n个字节。

服务器写入n个字节并立即关闭连接。

如果在读取完成之前套接字关闭或由于某些其他问题,在这种情况下可以读取调用返回负数或零吗? (在这种情况下,客户端/服务器在同一个Linux机器上运行)

我正面临这样的情况,但不确定这在TCP / IP子系统中如何工作以及如何解决它。

Sever: write close Client: read close 

关闭套接字连接的安全方法是首先调用shutdown来表示您不会写入,继续读取远程端发送的数据,然后关闭读取端并关闭套接字。 如果在读取发送给您的数据之前关闭套接字,操作系统将重置连接(发送设置了RST标志的数据包),远程端将此解释为错误。

TCP以串行方式处理连接,读取器按发送方传输的顺序处理所有内容。 当发件人关闭连接时,读者将在读取所有已发送的数据后获得EOF,而不是之前。