recv区别详解(2)

if (no_read > 200) {
            set_errno(ECONNRESET);
            return -1;
        }
    }

if (n < maxlen) {
        m = recv(sock->bsd_socket, (void *) t, 1, flags);
    }

if (errno != 0 && errno != ESPIPE && errno != EAGAIN) {
        return -1;
    }

set_errno(0);
}


还是指copy了关键部分,可以看到,这里的实现是一直循环调用recv,直到遇到\r或者\n或者读的数据长度到了指定的maxlen。

虽然这两个函数比较混乱,但是看到这里应该明白了吧!好了睡觉去啦!

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/b05e557fc6f87f11b441939492881d27.html