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

개요

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

recvfrom(3c)

Standard C Library Functions                                          recv(3C)



NAME
       recv, recvfrom, recvmsg - receive a message from a socket

SYNOPSIS
       #include <sys/socket.h>

       ssize_t recv(int s, void *buf, size_t len, int flags);


       ssize_t recvfrom(int s, void *restrict buf, size_t len, int flags,
            struct sockaddr *restrict from, socklen_t *restrict fromlen);


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

DESCRIPTION
       The  recv(),  recvfrom(),  and  recvmsg() functions are used to receive
       messages from another socket. The s socket is created with socket(3C).


       If from is a non-NULL pointer, the source address  of  the  message  is
       filled  in.  The  value-result  parameter fromlen is initialized by the
       caller to the size of the buffer associated with from and  modified  on
       return to indicate the actual size of the address stored in the buffer.
       The length of the message is returned. If a message is too long to  fit
       in  the supplied buffer, excess bytes may be discarded depending on the
       type of socket from which the message is received. See socket(3C).


       If no messages are available at the socket, the receive call waits  for
       a message to arrive. If the socket is non-blocking, -1 is returned with
       the external variable errno set to EWOULDBLOCK. See fcntl(2).


       For processes on the same host, recvmsg() can be used to receive a file
       descriptor  from another process, but it cannot receive ancillary data.
       See socket.h(3HEAD).


       If a zero-length buffer is specified for a message,  an  EOF  condition
       results  that  is  indistinguishable  from the successful transfer of a
       file descriptor. For that reason, one or more bytes of data  should  be
       provided when recvmsg() passes a file descriptor.


       The poll(2) or select(3C) calls can be used to determine when more data
       arrives.


       The flags parameter is formed by an OR operation on one or more of  the
       following:

       MSG_OOB             Read  any  out-of-band  data  present on the socket
                           rather than the regular in-band data.


       MSG_PEEK            Peek at the data present on the socket. The data is
                           returned,  but  not  consumed to allow a subsequent
                           receive operation to see the same data.


       MSG_WAITALL         Messages are blocked until the full amount of  data
                           requested  is  returned.  The  recv()  function can
                           return a smaller amount of  data  if  a  signal  is
                           caught,  the  connection is terminated, MSG_PEEK is
                           specified, or  if  an  error  is  pending  for  the
                           socket.


       MSG_DONTWAIT        Pending  messages  received  on  the connection are
                           returned. If data is unavailable, the function does
                           not block. This behavior is the equivalent to spec‐
                           ifying O_NONBLOCK  on  the  file  descriptor  of  a
                           socket, except that write requests are unaffected.


       MSG_CMSG_CLOEXEC    Set  the  close-on-exec  flag  for file descriptors
                           received using SCM_RIGHTS message.


       MSG_CMSG_CLOFORK    Set the close-on-fork  flag  for  file  descriptors
                           received using SCM_RIGHTS message.



       The  recvmsg()  function  call  uses  a  msghdr  structure  defined  in
       socket.h(3HEAD) to minimize the number of directly supplied parameters.
       recvmmsg(3C)  is  an  extension  of  the recvmsg() 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
       recvmsg()  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
       received. Otherwise, they return -1  and  set  errno  to  indicate  the
       error.

ERRORS
       The recv(), recvfrom(), and recvmsg() functions return errors under the
       following conditions:

       EBADF           The s file descriptor is invalid.


       EINVAL          The MSG_OOB flag is set  and  no  out-of-band  data  is
                       available.


       EINTR           The  operation is interrupted by the delivery of a sig‐
                       nal before any data is available to be received.


       EIO             An I/O error occurs while reading from  or  writing  to
                       the file system.


       ENOMEM          Insufficient user memory is available to complete oper‐
                       ation.


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


       ENOTSOCK        s is not a socket.


       ESTALE          A stale NFS file handle exists.


       EWOULDBLOCK     The  socket  is  marked  non-blocking and the requested
                       operation would block. EWOULDBLOCK  is  also  set  when
                       socket  option  SO_RCVTIMEO  is  set  and the requested
                       operation failed to transfer data  before  the  timeout
                       expired.  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.



       The  recv()  and  recvfrom()  functions fail under the following condi‐
       tions:

       EFAULT    buf points to an illegal address.


       EINVAL    The len argument overflows a ssize_t.



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

       EFAULT      msg points to an illegal address.


       EMSGSIZE    The msg_iovlen member of the msghdr structure pointed to by
                   msg  is less than or equal to 0, or greater than {IOV_MAX}.
                   See Intro(2) for a definition of {IOV_MAX}.


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


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),  ioctl(2),  poll(2),  read(2),  connect(3C),  getsockopt(3C),
       recvmmsg(3C),  select(3C),   send(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                          recv(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3