linux socket中的recv、recvfrom、read、recvmsg、readv比较

1.recv

原型:ssize_t recv(int sockfd, viod *buf, size_t len, int flags)

说明:套接字接收函数。返回接收的字节数。

2.recvfrom

原型:ssize_t recvfrom(int sockfd, void* buf, size_t len, int flags, struct sockaddr* src_addr, socklen_t* addrlen)

说明:在UDP的读写部分,比较常用。recvfrom读取sockfd上的数据,buf和len参数分别指定缓冲区的位置和大小。因为UDP通信没有连接的概念,所以我们读取数据都需要获取发送端的socket地址。recvfrom也可以用于面向连接,只需要把最后两个参数都设置为NULL。

3.read

原型:ssize_t read(int filedes, void *buf, size_t nbytes)

说明:文件描述符接收函数,可用于套接字接收。

4.recvmsg

原型:ssize_t recvmsg(int sockfd, struct msghdr * msg, int flag)

说明:将接收到的数据送入多个缓冲区,结构msghdr被recvfrom用于指定接收数据的输入缓冲区。返回以字节计数的消息长度,若无可用消息或对方已经按序结束则返回0,出错返回-1。

5.readv

原型:ssize_t readv(int fd, const struct iovec *iov, int iovcnt)

说明:文件描述符接收函数,可用于套接字批量接收操作接收。和recvmsg函数接收过程类似。

参考:

recv()_百度百科 (baidu.com)

recvfrom()_百度百科 (baidu.com)

read()_百度百科 (baidu.com)

Linux下的socket演示程序 (biancheng.net)

简述linux下,从socket写入和读取的函数,read和write函数的含义并解释其接口意义。 - 百度文库 (baidu.com)

linux网络编程(七)-recv()剖析 - 知乎 (zhihu.com)

recv/send/recvfrom/sendto/recvmsg/sendmsg小结 - 知乎 (zhihu.com)

socket recv函数系列,recv,recvfrom,recvmsg,一文彻底弄懂,可作参考手册_物联网心球的博客-CSDN博客

Linux socket下read函数详解_linux read socket_VioletEvergarden丶的博客-CSDN博客

你可能感兴趣的:(C语言,编程,网络,linux)