我知道read()是一个阻塞调用,除非我使套接字成为非阻塞。因此,我希望请求4K数据的read()调用应返回正值(读取的字节数)或错误时返回-1(客户端可能重置连接等)。我的问题是:在任何情况下read()都可以返回“ 0”吗?
我这样处理read():
if ((readval = read(acceptfd, buf, sizeof(buf) - 1)) < 0) { } else { buf[readval] = 0; //Do some thing with data }
如果read()返回零,则此代码炸弹轰炸,我知道如何修复它。但是read()是否有可能返回零?
当一侧的TCP连接关闭时,另一侧的read()返回0字节。