谈谈TCP Socket中读取数据的函数---read、recv、readv

read函数

  1. read函数从文件描述符(包括TCP Socket)中读取数据,并将读取的数据存储到指定的缓冲区中。
  2. 原型 ssize_t read(int fd, void *buf, size_t count);
    -fd:要读取数据的文件描述符,可以是TCP Socket
    -buf:存储读取数据的缓冲区
    -count:要读取的字节数
    -返回值:成功时返回实际读取的字节数,失败时返回-1,并设置errno变量来指示错误的原因。

recv函数

  1. recv函数从TCP Socket中读取数据,并将读取的数据存储到指定的缓冲区中,同步的IO接口。
  2. 原型 ssize_t recv(int sockfd, void *buf, size_t len, int flags);
    -sockfd:要读取数据的套接字描述符,即TCP Socket。
    -buf:存储读取数据的缓冲区。
    -len:要读取的字节数。
    -flags:可选的标志参数,用于控制recv函数的行为。
    -返回值:成功时返回实际读取的字节数,失败时返回-1,并设置errno变量来指示错误的原因,如果size==-1&&errno=EAGAIN或者EWOULDBLOCK表示设置socket为了非阻塞,连接成功但是没有数据,size==0,对方关闭了连接;。

readv函数

  1. readv函数从文件描述符(包括TCP Socket)中读取数据,并将读取的数据存储到指定的多个缓冲区中。
  2. 原型 ssize_t readv(int fd, const struct iovec *iov, int iovcnt);
    -fd:要读取数据的文件描述符,可以是TCP Socket。
    -iov:存储读取数据的多个缓冲区的数组。
    -iovcnt:缓冲区数组的长度。
    -返回值:成功时返回实际读取的字节数,返回0说明没有数据可读了或者到文件尾了;失败时返回-1,并设置errno变量来指示错误的原因。

注意: read函数和recv函数都是阻塞调用,即在没有数据可读时会一直阻塞等待,它们的主要区别在于recv函数可以通过flags参数控制一些特殊的行为,如设置MSG_PEEK标志来预览数据而不将其从缓冲区中移除。而readv函数可以一次读取多个缓冲区中的数据,并在内核中减少了多次系统调用的开销。

相关推荐

  1. 谈谈TCP Socket读取数据函数---read、recv、readv

    2024-05-05 01:12:01       28 阅读
  2. 谈谈TCP Socket数据函数---write、send 、sendv

    2024-05-05 01:12:01       33 阅读
  3. 谈谈Python分布式计算和大数据处理

    2024-05-05 01:12:01       33 阅读
  4. 谈谈Pytorchdataset

    2024-05-05 01:12:01       47 阅读
  5. go语言读取Excel表格数据

    2024-05-05 01:12:01       57 阅读
  6. android读取sd卡上文件数据

    2024-05-05 01:12:01       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-05 01:12:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-05 01:12:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-05 01:12:01       87 阅读
  4. Python语言-面向对象

    2024-05-05 01:12:01       96 阅读

热门阅读

  1. C++中的构造函数以及默认拷贝构造函数

    2024-05-05 01:12:01       36 阅读
  2. QT, 系统托盘 及 菜单

    2024-05-05 01:12:01       33 阅读
  3. 我用过的最好用的 AI 工具

    2024-05-05 01:12:01       34 阅读
  4. 【博弈游戏】

    2024-05-05 01:12:01       27 阅读
  5. 第二十六章 版本管理 - GIT

    2024-05-05 01:12:01       43 阅读
  6. 代码随想录算法训练营day56

    2024-05-05 01:12:01       32 阅读
  7. Linux上OcenBase单机版部署及基本信息查询

    2024-05-05 01:12:01       36 阅读