Как вы знаете, sendmsg имеет следующее объявление:
int sendmsg (int s, const struct msghdr * msg, int flags); Структура
и msghdr имеет следующую форму:
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 */
socklen_t msg_controllen; /* ancillary data buffer len */
int msg_flags; /* flags on received message */
};
Как вы видите, msghdr имеет массив буферов iovec и счетчик буферов msg_iovlen. Что интересно, так это то, как sendmsg отправляет эти буферы. Объединяет ли он все буферы и отправляет или отправляет в цикле for?