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

개요

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

sendto(3c)

send(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 re‐
       quire 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 no‐
                        tion.  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  re‐
       ceiving 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  ms‐
                       ghdr  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 op‐
                       eration  would block. EWOULDBLOCK is also returned when
                       sufficient memory is not immediately available to allo‐
                       cate a suitable buffer. In such a case,  the  operation
                       can  be  retried later. Another reason is if the socket
                       option SO_SNDTIMEO has been set and the requested oper‐
                       ation fails to transfer data  before  the  timeout  ex‐
                       pired. For more information, see the getsockopt(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  al‐
                  ready 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), se‐
       lect(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