NAME

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


SYNOPSIS

     #include <sys/types.h>
     #include <sys/socket.h>


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

     int sendto(int s, const void  *msg,  int  len  unsigned  int
     flags, const struct sockaddr *to, int tolen

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


DESCRIPTION

     WARNING: This is a BSD  man  page.   As  of  Linux  0.99.11,
     sendmsg was not implemented.

     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 specify-
     ing  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)  call may be used to determine when it is possible
     to send more data.

     The flags parameter may include one or more of  the  follow-
     ing:

          #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

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


ERRORS

     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.

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


CONFORMING TO

     4.4BSD, SVr4 (these function calls appeared in 4.2BSD).  The
     SVr4  versions  docoment additional error conditions EINVAL,
     EINTR, EMSGSIZE, ENOSR, ENOMEM.


SEE ALSO

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