Loading

UDP-传输层协议

首部


UDP

   SOCK_DGRAM      Supports datagrams (connectionless,  unreliable  messages
                   of a fixed maximum length).

特点

  • 无连接
  • 不可靠
  • 消息有最大长度

通信模型

发送端

  1. 创建通信节点 - socket
  2. 发送数据报(包) - sendto
  3. 关闭套接字 - close

接受端

  1. 创建通信节点 - socket
  2. 绑定地址端口 - bind
  3. 接收数据报 - recvfrom
  4. 关闭套接字 - close

相关函数

  • 其他函数参考TCP

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);
功能:
  • 发送数据报
参数:
  • socket - 套接字描述符
  • buf - 数据缓冲区首地址
  • len - 发送的数据报长度
  • flags - 发送标志
  • dest_addr - 发送目标地址 -
  • addrlen - 发送目标地址长度
返回:
  • 0-正常
  • -1-失败 设置errno

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);
功能:
  • 接受数据报
参数:
  • socket - 套接字描述符
  • buf - 数据缓冲区首地址
  • len - 数据缓冲去的大小
  • flags - 接收标志
  • dest_addr - 接受源地址
  • addrlen - 接受源地址长度
返回:
  • 成功-实际接受的字节数
  • -1-失败 设置errno
posted @ 2021-01-18 11:43  流缘飞雨  阅读(64)  评论(0)    收藏  举报