UDP接收报文函数recvfrom和UDP发送报文函数sendto
#include <sys/socket.h>
ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags,
struct sockaddr *from, socklen_t *addrlen);
sockfd、buff 和 nbytes 是前三个参数。sockfd 是本地创建的套接字描述符,buff 指向本地的缓存,nbytes 表示最大接收数据字节。
第四个参数 flags 是和 I/O 相关的参数,这里我们还用不到,设置为 0。
后面两个参数 from 和 addrlen,实际上是返回对端发送方的地址和端口等信息,这和 TCP 非常不一样,TCP 是通过 accept 函数拿到的描述字信息来决定对端的信息。另外 UDP 报文每次接收都会获取对端的信息,也就是说报文和报文之间是没有上下文的。函数的返回值告诉我们实际接收的字节数。
#include <sys/socket.h>
ssize_t sendto(int sockfd, const void *buff, size_t nbytes, int flags,
const struct sockaddr *to, socklen_t addrlen);
sendto 函数中的前三个参数为 sockfd、buff 和 nbytes。sockfd 是本地创建的套接字描述符,buff 指向发送的缓存,nbytes 表示发送字节数。
第四个参数 flags 依旧设置为 0。
后面两个参数 to 和 addrlen,表示发送的对端地址和端口等信息。
函数的返回值告诉我们实际发送的字节数。
此文章为11月Day 21学习笔记,内容来源于极客时间《网络编程实战》。