从套接字中迭代read()

Dan*_*ite 3 c c++ sockets tcp

这是read在套接字上迭代的正确方法吗?我很难让它正常工作.data.size也是unsigned int从套接字填充的.它是正确的.data.data是一个unsigned char *.

if ( data.size > 0 ) {
    data.data = (unsigned char*)malloc(data.size);
    memset(&data.data, 0, data.size);
    int remainingSize = data.size;
    unsigned char *iter = data.data;
    int count = 0;
    do {
        count = read(connect_fd, iter, remainingSize);
        iter += count;
        remainingSize -= count;
    } while (count > 0 && remainingSize > 0);
}
else {
    data.data = 0;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Dar*_*ron 9

在开始将其添加到其他值之前,您需要检查读取的返回值.

套接字报告EOF时会得到零,错误时会得-1.请记住,对于套接字EOF与关闭不同.