*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> send (2)              
Title
Content
Arch
Section
 

SEND(2)

Contents


NAME    [Toc]    [Back]

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

SYNOPSIS    [Toc]    [Back]

     #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, socklen_t tolen);

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

DESCRIPTION    [Toc]    [Back]

     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 detected
 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:

     #define MSG_OOB        0x1  /* process out-of-band data */
     #define  MSG_DONTROUTE   0x4   /* bypass routing, use direct
interface */

     The flag MSG_OOB is used to  send  ``out-of-band''  data  on
sockets that
     support this notion (e.g., SOCK_STREAM); the underlying protocol must also
 support ``out-of-band'' data.  MSG_DONTROUTE  is  usually
used only by
     diagnostic or routing programs.

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

RETURN VALUES    [Toc]    [Back]

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

ERRORS    [Toc]    [Back]

     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 parameter.


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

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

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

     [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 congestion.

     [EACCES]      The SO_BROADCAST option  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 down.

     [ECONNREFUSED]
                   The  destination host rejected the message (or
a previous
                   one).  This error can only be returned by connected 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 address was
                   specified.

     [EISCONN]      The socket is already connected, and a destination address
                   was specified.

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

     [EINVAL]      len was larger than SSIZE_MAX.

     Also, 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.

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

SEE ALSO    [Toc]    [Back]

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

HISTORY    [Toc]    [Back]

     The send() function call appeared in 4.2BSD.

OpenBSD      3.6                           July      28,     1998
[ Back ]
 Similar pages
Name OS Title
sendmsg Tru64 Send a message from a socket using a message structure
send Tru64 Send messages on a socket
sendfile FreeBSD send a file to a socket
sendto Tru64 Send messages through a socket
sendfile HP-UX send the contents of a file through a socket
sendfile Tru64 Send the contents of a file through a socket
shutdown Tru64 Shut down socket send and receive operations
sendfile64 HP-UX send the contents of a Large File through a socket
recvmsg Tru64 Receive a message from a socket using a message structure
send Tru64 send a message (only available within the message handling system, mh)
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service