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: 消息標識
*/