send(2) System Calls Manual send(2) send, sendto, sendmsg - (libc -lc) #include ssize_t send(size_t size; int sockfd, const void buf[size], size_t size, int flags); ssize_t sendto(size_t size; int sockfd, const void buf[size], size_t size, int flags, const struct sockaddr *dest_addr, socklen_t addrlen); ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags); send() sendto() sendmsg() . send() connected ( ). send() write(2) flags. flags send() write(2). send(sockfd, buf, size, flags); sendto(sockfd, buf, size, flags, NULL, 0); sockfd . sendto() (SOCK_STREAM SOCK_SEQPACKET) dest_addr addrlen ( EISCONN NULL 0) ENOTCONN . dest_addr addrlen. sendmsg() msg.msg_name msg.msg_namelen. send() sendto() buf size. sendmsg() msg.msg_iov . sendmsg() ( ). EMSGSIZE . send(). -1. send() / . EAGAIN EWOULDBLOCK . select(2) . (flags) flags OR . MSG_CONFIRM ( Linux 2.3.15) : . ( ARP ). SOCK_DGRAM SOCK_RAW IPv4 IPv6. arp(7) . MSG_DONTROUTE . . . MSG_DONTWAIT ( 2.2) EAGAIN EWOULDBLOCK. O_NONBLOCK ( fcntl(2) F_SETFL) MSG_DONTWAIT O_NONBLOCK ( open(2)) . MSG_EOR ( Linux 2.2) ( SOCK_SEQPACKET). MSG_MORE ( Linux 2.4.4) . TCP TCP_CORK ( tcp(7)) . Linux 2.6 UDP . ( UDP_CORK udp(7).) MSG_NOSIGNAL ( Linux 2.2) SIGPIPE . EPIPE . sigaction(2) SIGPIPE MSG_NOSIGNAL SIGPIPE . MSG_OOB ( SOCK_STREAM) . MSG_FASTOPEN ( Linux 3.7) TCP (RFC7413) SYN connect(2) write(2) connect(2) . . SYN. EINPROGRESS SYN . . errno connect(2) . TCP sysctl net.ipv4.tcp_fastopen. TCP_FASTOPEN_CONNECT tcp(7) . sendmsg() msghdr sendmsg() : 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 data buffer size */ int msg_flags; /* Flags (unused) */ }; msg_name . msg_namelen . NULL 0 . msg_iov msg_iovlen writev(2). ( ) msg_control msg_controllen. /proc/sys/net/core/optmem_max socket(7). unix(7) ip(7). msg_flags . . -1 errno . . . EACCES ( UNIX ) . ( path_resolution(7).) ( UDP) / . EAGAIN EWOULDBLOCK . POSIX.1-2001 . EAGAIN ( ) sockfd . /proc/sys/net/ipv4/ip_local_port_range ip(7). EALREADY . EBADF sockfd . ECONNRESET . EDESTADDRREQ . EFAULT . EINTR signal(7). EINVAL . EISCONN . ( .) EMSGSIZE . ENOBUFS . . ( . .) ENOMEM . ENOTCONN . ENOTSOCK sockfd . EOPNOTSUPP flags . EPIPE . SIGPIPE MSG_NOSIGNAL. POSIX.1-2001 msg_controllen msghdr socklen_t msg_iovlen int glibc size_t. POSIX.1-2024. MSG_CONFIRM . 4.4BSD, SVr4, POSIX.1-2001. ( 4.2BSD). POSIX.1-2001 MSG_OOB MSG_EOR. POSIX.1-2008 MSG_NOSIGNAL. sendmmsg(2) . EPIPE ENOTCONN. sendto() getaddrinfo(3). fcntl(2), getsockopt(2), recv(2), select(2), sendfile(2), sendmmsg(2), shutdown(2), socket(2), write(2), cmsg(3), ip(7), ipv6(7), socket(7), tcp(7), udp(7), unix(7) 3 . . : . 6.18 29 2025 send(2)