diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
| commit | 253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch) | |
| tree | adf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man2/send.2 | |
| parent | a9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff) | |
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man2/send.2')
| -rw-r--r-- | static/netbsd/man2/send.2 | 278 |
1 files changed, 278 insertions, 0 deletions
diff --git a/static/netbsd/man2/send.2 b/static/netbsd/man2/send.2 new file mode 100644 index 00000000..adee462a --- /dev/null +++ b/static/netbsd/man2/send.2 @@ -0,0 +1,278 @@ +.\" $NetBSD: send.2,v 1.34 2021/12/10 20:36:02 andvar Exp $ +.\" +.\" Copyright (c) 1983, 1991, 1993 +.\" The Regents of the University of California. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" @(#)send.2 8.2 (Berkeley) 2/21/94 +.\" +.Dd March 27, 2021 +.Dt SEND 2 +.Os +.Sh NAME +.Nm send , +.Nm sendto , +.Nm sendmsg , +.Nm sendmmsg +.Nd send a message from a socket +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In sys/socket.h +.Ft ssize_t +.Fn send "int s" "const void *msg" "size_t len" "int flags" +.Ft ssize_t +.Fn sendto "int s" "const void *msg" "size_t len" "int flags" "const struct sockaddr *to" "socklen_t tolen" +.Ft ssize_t +.Fn sendmsg "int s" "const struct msghdr *msg" "int flags" +.Ft int +.Fn sendmmsg "int s" "struct mmsghdr *mmsg" "unsigned int vlen" "unsigned int flags" +.Sh DESCRIPTION +.Fn send , +.Fn sendto , +.Fn sendmsg , +and +.Fn sendmmsg +are used to transmit a message to another socket. +.Fn send +may be used only when the socket is in a +.Em connected +state, while +.Fn sendto , +.Fn sendmsg +and +.Fn sendmmsg +may be used at any time. +.Pp +The +.Fn sendmmsg +call can be used to send multiple messages in the same call using an array of +.Fa mmsghdr +elements with the following form, as defined in +.Ao Pa sys/socket.h Ac : +.Bd -literal +struct mmsghdr { + struct msghdr msg_hdr; /* the message to be sent */ + unsigned int msg_len; /* number of bytes transmitted */ +}; +.Ed +.Pp +The +.Fa msg_len +member contains the number of bytes sent for each +.Fa msg_hdr +member. +The array has +.Fa vlen +elements, which is limited to +.Dv 1024 . +If there is an error, a number fewer than +.Fa vlen +may be returned, and the error may be retrieved using +.Xr getsockopt 2 +with +.Dv SO_ERROR . +.Pp +The address of the target is given by +.Fa to , +with +.Fa tolen +specifying its size. +The length of the message is given by +.Fa len . +If the message is too long to pass atomically through the +underlying protocol, the error +.Er EMSGSIZE +is returned, and +the message is not transmitted. +.Pp +No indication of failure to deliver is implicit in a +.Fn send . +Locally detected errors are indicated by a return value of \-1. +.Pp +If no messages space is available at the socket to hold +the message to be transmitted, then +.Fn send +normally blocks, unless the socket has been placed in +non-blocking I/O mode. +The +.Xr select 2 +or +.Xr poll 2 +call may be used to determine when it is possible to +send more data. +Unfortunately this does not work when the interface queue which is used to +send the message is full, and the call returns +.Er ENOBUFS . +.Pp +The +.Fa flags +parameter may include one or more of the following: +.Bd -literal +#define MSG_OOB 0x0001 /* process out-of-band data */ +#define MSG_PEEK 0x0002 /* peek at incoming message */ +#define MSG_DONTROUTE 0x0004 /* bypass routing, use direct interface */ +#define MSG_EOR 0x0008 /* data completes record */ +#define MSG_NOSIGNAL 0x0400 /* do not generate SIGPIPE on EOF */ +.Ed +.Pp +The flag +.Dv MSG_OOB +is used to send +.Dq out-of-band +data on sockets that support this notion (e.g. +.Dv SOCK_STREAM ) ; +the underlying protocol must also support +.Dq out-of-band +data. +.Dv MSG_EOR +is used to indicate a record mark for protocols which support the +concept. +.\" .Dv MSG_EOF +.\" requests that the sender side of a socket be shut down, and that an +.\" appropriate indication be sent at the end of the specified data; +.\" this flag is only implemented for +.\" .Dv SOCK_STREAM +.\" sockets in the +.\" .Dv PF_INET +.\" protocol family, and is used to implement Transaction +.\" .Tn TCP +.\" (see +.\" .Xr ttcp 4 ) . +.Dv MSG_DONTROUTE +is usually used only by diagnostic or routing programs. +.Pp +See +.Xr recv 2 +for a description of the +.Fa msghdr +structure. +.Dv MSG_NOSIGNAL +is used to prevent +.Dv SIGPIPE +generation when writing a socket that +may be closed. +.Sh RETURN VALUES +The +.Fn send , +.Fn sendto , +and +.Fn sendmsg +calls return the number of characters sent, or \-1 +if an error occurred. +The +.Fn sendmmsg +call returns the number of messages sent, or \-1 +if an error occurred. +.Sh ERRORS +.Fn send , +.Fn sendto , +.Fn sendmsg , +and +.Fn sendmmsg +fail if: +.Bl -tag -width Er +.It Bq Er EACCES +The SO_BROADCAST option is not set on the socket, and a broadcast address +was given as the destination. +.It Bq Er EAFNOSUPPORT +Addresses in the specified address family cannot be used with this socket. +.It Bq Er EAGAIN|EWOULDBLOCK +The socket is marked non-blocking and the requested operation +would block. +.It Bq Er EBADF +An invalid descriptor was specified. +.It Bq Er EDSTADDRREQ +In a non-connected socket a destination address has not been specified. +.It Bq Er EFAULT +An invalid user space address was specified for a parameter. +.It Bq Er EHOSTDOWN +The destination is a host on the local subnet and does not respond to +.Xr arp 4 . +.It Bq Er EHOSTUNREACH +The destination for the message is unreachable. +.It Bq Er EINVAL +The total length of the I/O is more than can be expressed by the ssize_t +return value. +.It Bq Er EINVAL +The socket address length passed was outside the allowable range. +.It Bq Er EMSGSIZE +The socket requires that message be sent atomically, +and the size of the message to be sent made this impossible. +.It Bq Er ENOBUFS +The system was unable to allocate an internal buffer. +The operation may succeed when buffers become available. +.Pp +An alternative reason: the output queue for a network interface was full. +This generally indicates that the interface has stopped sending, +but may be caused by transient congestion. +.It Bq Er ENOTSOCK +The argument +.Fa s +is not a socket. +.It Bq Er EPIPE +In a connected socket the connection has been broken. +.El +.Pp +.Fn sendto +will also fail if: +.Bl -tag -width Er +.It Bq Er EISCONN +A destination address was specified and the socket is already connected. +.El +.Pp +.Fn sendmsg +and +.Fn sendmmsg +will also fail if: +.Bl -tag -width Er +.It Bq Er EMSGSIZE +The +.Fa msg_iovlen +member of the +.Fa msg +structure is less than or equal to 0 +or is greater than +.Brq Dv IOV_MAX . +.El +.Sh SEE ALSO +.Xr fcntl 2 , +.Xr getsockopt 2 , +.Xr recv 2 , +.Xr select 2 , +.Xr socket 2 , +.Xr write 2 +.Sh HISTORY +The +.Fn send +function call appeared in +.Bx 4.2 . +The +.Fn sendmmsg +function call appeared in +.Tn Linux 3.0 +and +.Nx 7.0 . |
