struct msghdr 结构体

struct msghdr 结构体
 
struct iovec {                    /* Scatter/gather arrayitems */
      void *iov_base;              /*Starting address */
      size_t iov_len;               /* Number of bytes to transfer*/
  };
   /* iov_base: iov_base指向数据包缓冲区,即参数buff,iov_len是buff的长度。msghdr中允许一次传递多个buff,
     以数组的形式组织在 msg_iov中,msg_iovlen就记录数组的长度(即有多少个buff)
   */
  struct msghdr {
      void         *msg_name;       /* optional address */
      socklen_t     msg_namelen;    /* size of address */
      struct iovec *msg_iov;        /* scatter/gather array */
      size_t        msg_iovlen;     /* # elements in msg_iov */
      void         *msg_control;    /* ancillary data, see below */
      size_t        msg_controllen; /* ancillary databuffer len */
      int           msg_flags;      /* flags on received message */
  };
  /* msg_name:数据的目的地址,网络包指向sockaddr_in, netlink则指向sockaddr_nl;
     msg_namelen: msg_name 所代表的地址长度
     msg_iov: 指向的是缓冲区数组
     msg_iovlen: 缓冲区数组长度
     msg_control: 辅助数据,控制信息(发送任何的控制信息)
     msg_controllen: 辅助信息长度
     msg_flags: 消息标识
  */

你可能感兴趣的:(struct msghdr 结构体)