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

Med*_*ine 2 c sockets network-programming tcp client-server

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

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

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

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

Sever:
write
close

Client:
read
close
Run Code Online (Sandbox Code Playgroud)

Jon*_*oni 7

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