Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
SEND(2)			  FreeBSD System Calls Manual		       SEND(2)

     send, sendto, sendmsg -- send a message from a socket

     #include <sys/socket.h>

     send(int s, const void *msg, size_t len, int flags);

     sendto(int	s, const void *msg, size_t len,	int flags,
	 const struct sockaddr *to, socklen_t tolen);

     sendmsg(int s, const struct msghdr	*msg, int flags);

     send(), sendto(), and sendmsg() are used to transmit a message to another
     socket.  send() may be used only when the socket is in a connected	state,
     while sendto() and	sendmsg() may be used at any time.

     The address of the	target is given	by to with tolen specifying its	size.
     The length	of the message is given	by len.	 If the	message	is too long to
     pass atomically through the underlying protocol, the error	EMSGSIZE is
     returned, and the message is not transmitted.

     No	indication of failure to deliver is implicit in	a send().  Locally de-
     tected errors are indicated by a return value of -1.

     If	no messages space is available at the socket to	hold the message to be
     transmitted, then send() normally blocks, unless the socket has been
     placed in non-blocking I/O	mode.  The select(2) or	poll(2)	system calls
     may be used to determine when it is possible to send more data.

     The flags parameter may include one or more of the	following:

	   MSG_DONTROUTE    bypass routing tables, silently ignored
	   MSG_DONTWAIT	    don't block
	   MSG_EOR	    terminate the record (SOCK_SEQPACKET only)
	   MSG_NOSIGNAL	    don't send SIGPIPE
	   MSG_OOB	    process out-of-band	data

     The flag MSG_OOB is used to send "out-of-band" data on sockets that sup-
     port this notion (e.g., SOCK_STREAM); the underlying protocol must	also
     support "out-of-band" data.  MSG_NOSIGNAL is used to request not to send
     the SIGPIPE signal	if an attempt to send is made on a socket that is shut
     down for writing or no longer connected.

     See recv(2) for a description of the msghdr structure.

     The call returns the number of characters sent, or	-1 if an error oc-

     send(), sendto(), and sendmsg() fail if:

     [EBADF]		An invalid descriptor was specified.

     [ENOTSOCK]		The argument s is not a	socket.

     [EFAULT]		An invalid user	space address was specified for	a pa-

     [EMSGSIZE]		The socket requires that message be sent atomically,
			and the	size of	the message to be sent made this im-

     [EAGAIN]		The socket is marked non-blocking or the MSG_DONTWAIT
			flag is	set and	the requested operation	would block.

     [ENOBUFS]		The system was unable to allocate an internal buffer.
			The operation may succeed when buffers become avail-

     [ENOBUFS]		The output queue for a network interface was full.
			This generally indicates that the interface has
			stopped	sending, but may be caused by transient	con-

     [EACCES]		The connection was blocked by pf(4), or	SO_BROADCAST
			is not set on the socket and a broadcast address was
			given as the destination.

     [EHOSTUNREACH]	The destination	address	specified an unreachable host.

     [EINVAL]		The flags parameter is invalid.

     [EHOSTDOWN]	The destination	address	specified a host that is down.

     [ENETDOWN]		The destination	address	specified a network that is

     [ECONNREFUSED]	The destination	host rejected the message (or a	previ-
			ous one).  This	error can only be returned by con-
			nected sockets.

     [ENOPROTOOPT]	There was a problem sending the	message.  This error
			can only be returned by	connected sockets.

     [EDESTADDRREQ]	The socket is not connected, and no destination	ad-
			dress was specified.

     [EPIPE]		The socket is shut down	for writing or not longer con-
			nected and the MSG_NOSIGNAL flag is set.

     In	addition, send() and sendto() may return the following error:

     [EINVAL]		len was	larger than SSIZE_MAX.

     sendto() and sendmsg() may	return the following errors:

     [EADDRNOTAVAIL]	No suitable address is available on the	local machine.

     [EAFNOSUPPORT]	Addresses in the specified address family cannot be
			used with this socket.

     [EISCONN]		The socket is already connected, and a destination ad-
			dress was specified.

     sendmsg() may return the following	errors:

     [EINVAL]		The sum	of the iov_len values in the msg_iov array
			overflowed an ssize_t.

     [EMSGSIZE]		The msg_iovlen member of msg was less than 0 or	larger
			than IOV_MAX.

     [EMFILE]		The message contains control information utilizing
			CMSG_DATA(3) to	pass file descriptors, but too many
			file descriptors are already in-flight.

     fcntl(2), getsockopt(2), poll(2), recv(2),	select(2), socket(2),
     write(2), CMSG_DATA(3)

     The send(), sendto(), and sendmsg() functions conform to IEEE Std
     1003.1-2008 ("POSIX.1").  The MSG_DONTWAIT	and MSG_NOSIGNAL flags are ex-
     tensions to that specification.

     The send()	function call appeared in 4.1cBSD.

FreeBSD	13.0		       January 11, 2019			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help