本文主要是介绍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学习笔记,内容来源于极客时间《网络编程实战》。
这篇关于UDP接收报文函数recvfrom和UDP发送报文函数sendto的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!