sendmsg(2)





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, size_t len, int flags);
       int  sendto(int s, const void *msg, size_t len, int flags,
       const struct sockaddr *to, socklen_t tolen);
       int sendmsg(int s, const struct msghdr *msg, int flags);


DESCRIPTION

       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 speci­
       fying 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.

       When  the message does not fit into the send buffer of the
       socket, send normally blocks, unless the socket  has  been
       placed  in non-blocking I/O mode.  In non-blocking mode it
       would return EAGAIN in this case.  The select(2) call  may
       be  used  to  determine  when  it is possible to send more
       data.

       The flags parameter is a flagword and can contain the fol­
       lowing flags:

       MSG_OOB
              Sends 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
              Dont't  use  a gateway to send out the packet, only
              send to hosts on directly connected networks.  This
              is  usually used only by diagnostic or routing pro­
              grams. This is only defined for  protocol  families
              that route; packet sockets don't.

       MSG_DONTWAIT
              Enables  non-blocking  operation;  if the operation
              would block, EAGAIN is returned (this can  also  be
              enabled  using  the  O_NONBLOCK  with  the  F_SETFL



              fcntl(2)).

       MSG_NOSIGNAL
              Requests not to send SIGPIPE on  errors  on  stream
              oriented sockets when the other end breaks the con­
              nection. The EPIPE error is still returned.

       See recv(2) for a description of the msghdr structure. You
       may  send  control  information  using the msg_control and
       msg_controllen members. The maximum control buffer  length
       the  kernel  can  process  is  limited  per  socket by the
       net.core.optmem_max sysctl; see socket(7).


RETURN VALUES

       The calls return the number of characters sent, or  -1  if
       an error occurred.


ERRORS

       These  are  some  standard  errors generated by the socket
       layer. Additional errors may  be  generated  and  returned
       from the underlying protocol modules; see their respective
       manual pages.

       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 atomi­
              cally, and the size of the message to be sent  made
              this impossible.

       EAGAIN or EWOULDBLOCK
              The socket is marked non-blocking and the requested
              operation would block.

       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.   (This  cannot occur in Linux, packets
              are just silently dropped when a device queue over­
              flows.)

       EINTR  A signal occurred.

       ENOMEM No memory available.

       EINVAL Invalid argument passed.




       EPIPE  The  local  end  has been shut down on a connection
              oriented socket.  In this  case  the  process  will
              also  receive a SIGPIPE unless MSG_NOSIGNAL is set.


CONFORMING TO

       4.4BSD, SVr4, POSIX 1003.1g draft  (these  function  calls
       appeared in 4.2BSD).


NOTE

       The prototypes given above follow the Single Unix Specifi­
       cation, as glibc2 also does; the flags argument was  `int'
       in BSD 4.*, but `unsigned int' in libc4 and libc5; the len
       argument was `int' in BSD 4.* and libc4, but  `size_t'  in
       libc5;  the  tolen argument was `int' in BSD 4.* and libc4
       and libc5.  See also accept(2).


SEE ALSO

       fcntl(2), recv(2), select(2), getsockopt(2),  sendfile(2),
       socket(2), write(2), socket(7), ip(7), tcp(7), udp(7)






































Man(1) output converted with man2html