一、recvfrom
接收数据:将系统缓冲区中的数据拷贝到应用层
#include <sys/types.h> //头文件
#include <sys/socket.h>ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
参数:
1.sockfd:文件描述符
2.buf:被写入的缓冲区——通常是char buffer[]
3.len:缓冲区的大小
4.flags:控制接收行为的标志,通常设为0(阻塞式等待数据);以下是可用标志
MSG_WAITALL:尝试接收到全部请求的数据,函数可能会阻塞,知道收到所偶数据
MSG_PEEK:查看即将接收到的数据,但是不从套接字缓冲区中删除它;
5.sockaddr类型的指针,输出型参数该参数是用来接收从网络对端传来的结构体,以便后续给对端的主机发送消息;输入输出型参数
6.第五个参数实际的长度;传得是地址;输出型参数
二、sendto
发送数据:将应用层数据发送给系统的缓冲区
#include <sys/types.h> //头文件
#include <sys/socket.h>ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
参数:
跟recvfrm参数并无太大区别;只不过最后一个参数,是输入型参数;