send(3N) send(3N)
NAME
send, sendto, sendmsg - send a message from a socket
SYNOPSIS
cc [options] file -lsocket -lnsl
#include <sys/types.h>
#include <sys/socket.h>
ssize_t send(int s, const void *msg, size_t len, int flags);
ssize_t sendto(int s, const void *msg, size_t len, int flags,
const struct sockaddr *to, size_t tolen);
ssize_t sendmsg(int s, const struct msghdr *msg, int flags);
DESCRIPTION
s is a socket created with socket. 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, then the error EMSGSIZE is returned, and the message
is not transmitted.
No indication of failure to deliver is implicit in a send.
Return values of -1 indicate some locally detected errors.
If no buffer 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 [see
fcntl(2)]. The select call may be used to determine when it
is possible to send more data.
The flags parameter is formed by ORing one or more of the
following:
MSG_OOB Send out-of-band data on sockets that support this
notion. The underlying protocol must also support
out-of-band data. Currently, only SOCK_STREAM
sockets created in the AF_INET address family
support out-of-band data.
MSG_DONTROUTE
The SO_DONTROUTE option is turned on for the
duration of the operation. It is used only by
diagnostic or routing programs.
Copyright 1994 Novell, Inc. Page 1
send(3N) send(3N)
See recv(3N) for a description of the msghdr structure.
Files
/usr/lib/locale/locale/LC_MESSAGES/uxnsl
Return Values
These calls return the number of bytes sent, or -1 if an error
occurred.
ERRORS
The calls fail if:
EBADF s is an invalid descriptor.
ENOTSOCK s is a descriptor for a file, not a socket.
EINVAL tolen is not the size of a valid address for the
specified address family.
EINTR The operation was interrupted by delivery of a
signal before any data could be buffered to be
sent.
EMSGSIZE The socket requires that message be sent
atomically, and the message was too long.
EWOULDBLOCK The socket is marked non-blocking and the
requested operation would block.
ENOMEM There was insufficient user memory available for
the operation to complete.
ENOSR There were insufficient STREAMS resources
available for the operation to complete.
REFERENCES
connect(3N), fcntl(2), getsockopt(3N), recv(3N), socket(3N),
write(2)
NOTICES
The type of address structure passed to accept depends on the
address family. UNIX domain sockets (address family AF_UNIX)
require a sockaddr_un structure as defined in sys/un.h;
Internet domain sockets (address family AF_INET) require a
struct sockaddr_in structure as defined in netinet/in.h.
Other address families may require other structures. Use the
Copyright 1994 Novell, Inc. Page 2
send(3N) send(3N)
structure appropriate to the address family; cast the
structure address to a generic caddr_t in the call to send and
pass the size of the structure in the tolen argument.
Copyright 1994 Novell, Inc. Page 3