查询 piggybacked FIN & 接收

Query about piggybacked FIN & recieve

如果收到搭载的 FIN,此代码是否有效?

while(1) {

    rc = recv(sock,buf,sizeof(buf),MSG_WAITALL);

    if (rc > 0)
    {
        /* Code to process recv buf */
    }
    else if (rc == 0)
    {
        /* received FIN ?? */
        close(sock);
        break;
    }
    else /* rc < 0 */
    {
        /* Handle error */
        break;
    }
}

想知道它是否有效以及您可能有的任何替代建议。

如果有数据,rc 将为正,您的第一个 if 块将执行。如果下次除了 FIN 什么都没有了,rc 将为零,你的第二个块将执行。