sendto(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

sendto(3c)

Standard C Library Functions                                          send(3C)



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

SYNOPSIS
       #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
       The  send(),  sendto(),  and sendmsg() functions are used to transmit a
       message to another transport end-point. The send() function can be used
       only  when  the  socket  is  in a connected state. See connect(3C). The
       sendto() and sendmsg() functions can be used at any time. The s  socket
       is created with socket(3C).


       The address of the target is supplied by to with a tolen parameter used
       to specify the size. The length of the message is supplied by  the  len
       parameter.  For  socket  types  such  as  SOCK_DGRAM  and SOCK_RAW that
       require atomic messages, the error EMSGSIZE is returned and the message
       is  not  transmitted when it is too long to pass atomically through the
       underlying protocol. The same restrictions do not apply to  SOCK_STREAM
       sockets.


       A  return value −1 indicates locally detected errors. It does not imply
       a delivery failure.


       If the socket does not have enough buffer space  available  to  hold  a
       message,  the send() function blocks the message, unless the socket has
       been placed in non-blocking I/O mode (see fcntl(2)). The select(3C)  or
       poll(2)  call can be used to determine when it is possible to send more
       data.


       The flags parameter is formed from the bitwise OR of zero  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. Only SOCK_STREAM sockets created in the
                        AF_INET or the AF_INET6 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.


       MSG_NOSIGNAL     The MSG_NOSIGNAL flag requests not to send the SIGPIPE
                        signal if an attempt to send is made on a  stream-ori‐
                        ented  socket  that  is no longer connected. The EPIPE
                        error is still returned.



       The  sendmsg()  function  call  uses  a  msghdr  structure  defined  in
       socket.h(3HEAD) to minimize the number of directly supplied parameters.
       sendmmsg(3C) is an extension of  the  sendmsg()  function  that  allows
       receiving multiple messages in a single call.


       The contents of the msghdr structure differ depending on whether or not
       __USE_SUNOS_SOCKETS__ is defined before  including  the  <sys/socket.h>
       header.  All  source  files  accessing msghdr structures or calling the
       sendmsg() function must be compiled with  either  __USE_SUNOS_SOCKETS__
       defined  or  all with it undefined — mixing and matching will not work.
       See the socket.h(3HEAD) manual page for details.

RETURN VALUES
       Upon successful completion, these functions return the number of  bytes
       sent. Otherwise, they return -1 and set errno to indicate the error.

ERRORS
       The  send(),  sendto(), and sendmsg() functions return errors under the
       following conditions:

       EBADF           s is not a valid file descriptor.


       EINTR           The operation was interrupted by delivery of  a  signal
                       before any data could be buffered to be sent.


       EMSGSIZE        The message is too large to be sent all at once (as the
                       socket requires),  or  the  msg_iovlen  member  of  the
                       msghdr  structure pointed to by message is less than or
                       equal to 0 or is greater than {IOV_MAX}.


       ENOMEM          Insufficient memory is available to complete the opera‐
                       tion.


       ENOSR           Insufficient  STREAMS  resources  are available for the
                       operation to complete.


       ENOTSOCK        s is not a socket.


       EWOULDBLOCK     The socket is marked  non-blocking  and  the  requested
                       operation  would  block.  EWOULDBLOCK  is also returned
                       when sufficient memory is not immediately available  to
                       allocate  a suitable buffer. In such a case, the opera‐
                       tion can be retried later. Another  reason  is  if  the
                       socket   option   SO_SNDTIMEO  has  been  set  and  the
                       requested operation fails to transfer data  before  the
                       timeout expired. For more information, see the getsock‐
                       opt(3C) man page.


       ECONNREFUSED    The requested connection was refused by the  peer.  For
                       connected  IPv4  and  IPv6 datagram sockets, this indi‐
                       cates that the system received an ICMP Destination Port
                       Unreachable  message  from the peer in response to some
                       prior transmission.



       The send() and sendto() functions return  errors  under  the  following
       conditions:

       EFAULT    buf points to an illegal address.


       EINVAL    The len argument overflows a ssize_t.

                 Inconsistent port attributes for system call.



       The sendto() function returns errors under the following conditions:

       EINVAL     The  value specified for the tolen parameter is not the size
                  of a valid address for the specified address family.


       EISCONN    A destination  address  was  specified  and  the  socket  is
                  already connected.



       The sendmsg() function returns errors under the following conditions:

       EFAULT    msg points to an illegal address.


       EINVAL    The  msg_iovlen  member of the msghdr structure pointed to by
                 msg is less than or equal to 0, or the  sum  of  the  iov_len
                 values in the msg_iov array overflows a ssize_t.

                 One  of the iov_len values in the msg_iov array member of the
                 msghdr structure pointed to by msg is negative, or the sum of
                 the iov_len values in the msg_iov array overflows a ssize_t.

                 msg_iov contents are inconsistent with port attributes.



       The send() function returns errors under the following conditions:

       EPIPE    The  socket is shut down for writing, or the socket is connec‐
                tion-mode and is no longer connected. In the latter  case,  if
                the  socket is of type SOCK_STREAM, the SIGPIPE signal is gen‐
                erated to the calling thread unless MSG_NOSIGNAL is set.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE  VALUE  _  Interface StabilityCommitted _ MT-LevelAsync-Signal-
       Safe _ StandardSee standards(7).


SEE ALSO
       fcntl(2), poll(2),  write(2),  connect(3C),  getsockopt(3C),  recv(3C),
       select(3C), sendmmsg(3C), socket(3C), socket.h(3HEAD), attributes(7)

HISTORY
       These functions have been present since the initial release of Solaris.



Oracle Solaris 11.4               2 Feb 2021                          send(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3