一尘不染

连接的套接字上的read()函数可以返回零字节吗?

linux

我知道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()是否有可能返回零?


阅读 280

收藏
2020-06-03

共1个答案

一尘不染

当一侧的TCP连接关闭时,另一侧的read()返回0字节。

2020-06-03