Appearance
函数原型
功能:接收对端发送过来的数据包
c
#include <sys/types.h>
#include <sys/socket.h>
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);参数
int sockfd:需要填写通信用的套接字文件描述符,即accept函数获取到的新的文件描述符;void *buf:该指针指向的内存空间中会存储接收到的数据,可以接收任意类型数据;size_t len:指定要接收多少个字节的数据;int flags:0:阻塞方式接收,当对端没有发送数据的时候,该recv函数阻塞;MSG_DONTWAIT:非阻塞;
recvfrom 独有
📣 recv 相当于 recvfrom 后面两个参数填空 NULL,即放弃接受到的地址
src_addr:地址信息结构体,参考 bind(2)addrlen:真实地址信息结构体的大小,注意是指针类型
返回值
> 0成功,返回成功获取的字节数= 0对端关闭,返回 0- 1失败,重置 errno
📣 注意:
- recv 最后的 flags 填 0 时,与 read 函数功能完全一致,所以 recv 可以用于 read 函数的替换;
- send 最后的 flags 填 0 时,与 write 函数功能完全一致,所以 send 可以用 write 函数替换