码迷,mamicode.com
首页 > 系统相关 > 详细

Linux网络编程-readn函数实现

时间:2016-12-08 17:50:48      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:linux系统   turn   unsigned   ptr   网络   数据   函数   char   ret   

readn函数功能:在网络编程的读取数据中,通常会需要用到一个读指定字节才返回的函数,linux系统调用中没有给出,需要自己封装。

readn实现代码:

int readn(int fd, void *vptr, size_t n)
{
    size_t          nleft = n;           //readn函数还需要读的字节数
    ssize_t         nread = 0;           //read函数读到的字节数
    unsigned char   *ptr = (char *)vptr; //指向缓冲区的指针

    while (nleft > 0)
    {
        nread = read(fd, ptr, nleft);
        if (-1 == nread)
        {
            if (EINTR == errno)
                nread = 0;
            else
                return -1;
        }
        else if (0 == nread)
        {
            break;
        }
        nleft -= nread;
        ptr += nread;
    }
    return n - nleft;
}

 

Linux网络编程-readn函数实现

标签:linux系统   turn   unsigned   ptr   网络   数据   函数   char   ret   

原文地址:http://www.cnblogs.com/yongqiang/p/6145498.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!