summaryrefslogtreecommitdiff
path: root/static/netbsd/man2/send.2
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
commit253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch)
treeadf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man2/send.2
parenta9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff)
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man2/send.2')
-rw-r--r--static/netbsd/man2/send.2278
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 .