send(2)send(2)Name
send, sendto, sendmsg - send a message from a socket
Syntax
#include <sys/types.h>
#include <sys/socket.h>
cc = send(s, msg, len, flags)
int cc, s;
char *msg;
int len, flags;
cc = sendto(s, msg, len, flags, to, tolen)
int cc, s;
char *msg;
int len, flags;
struct sockaddr *to;
int tolen;
cc = sendmsg(s, msg, flags)
int cc, s;
struct msghdr msg[];
int flags;
Description
The and system calls are used to transmit a message to another socket.
The system call may be used only when the socket is in a connected
state, while the and system calls 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. If the
address specified in the argument is a broadcast address, the SO_BROAD‐
CAST option must be set for broadcasting to succeed.
No indication of failure to deliver is implicit in a Return values of
-1 indicate some locally detected errors.
If no messages space is available at the socket to hold the message to
be transmitted, normally blocks, unless the socket has been placed in
nonblocking I/O mode. The call can be used to determine when it is
possible to send more data.
The flags parameter can be set to MSG_OOB to send out-of-band data on
sockets that support this features (for example, SOCK_STREAM).
See for a description of the msghdr structure.
The call returns the number of characters sent, or -1 if an error
occurred.
Diagnostics
[EBADF] An invalid descriptor was specified.
[EDESTADDRREQ] A required address was omitted from an operation on
a socket.
[EFAULT] An invalid user space address was specified for a
parameter.
[EINVAL] An invalid argument length for the message was
specified.
[EINTR] The send was interrupted by delivery of a signal.
[ENOTCONN] The socket is not connected.
[ENOTSOCK] The argument s is not a socket.
[EMSGSIZE] The socket requires that messages be sent atomi‐
cally, and the size of the message to be sent made
this impossible.
[EPIPE] A write on a pipe or socket for which there is no
process to read the data.
[EWOULDBLOCK] The socket is marked nonblocking, and the requested
operation would block.
See Alsorecv(2), getsockopt(2), socket(2)send(2)