Home | History | Annotate | Download | only in BsdSocketLib
      1 /** @file
      2   Implement the recv API.
      3 
      4   Copyright (c) 2011, Intel Corporation
      5   All rights reserved. This program and the accompanying materials
      6   are licensed and made available under the terms and conditions of the BSD License
      7   which accompanies this distribution.  The full text of the license may be found at
      8   http://opensource.org/licenses/bsd-license.php
      9 
     10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13 **/
     14 
     15 #include <SocketInternals.h>
     16 
     17 
     18 /**
     19   Receive data from a network connection.
     20 
     21   The recv routine waits for receive data from a remote network
     22   connection.  This routine is typically used for SOCK_STREAM
     23   because it waits for receive data from the target system specified
     24   in the ::connect call.
     25 
     26   The
     27   <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/recv.html">POSIX</a>
     28   documentation is available online.
     29 
     30   @param [in] s         Socket file descriptor returned from ::socket.
     31 
     32   @param [in] buffer    Address of a buffer to receive the data.
     33 
     34   @param [in] length    Length of the buffer in bytes.
     35 
     36   @param [in] flags     Message control flags
     37 
     38   @return     This routine returns the number of valid bytes in the buffer,
     39               zero if no data was received, and -1 when an error occurs.
     40               In the case of an error, ::errno contains more details.
     41 
     42  **/
     43 ssize_t
     44 recv (
     45   int s,
     46   void * buffer,
     47   size_t length,
     48   int flags
     49   )
     50 {
     51   ssize_t BytesRead;
     52 
     53   //
     54   //  Receive the data from the remote system
     55   //
     56   BytesRead = recvfrom ( s,
     57                          buffer,
     58                          length,
     59                          flags,
     60                          NULL,
     61                          NULL );
     62 
     63   //
     64   //  Return the number of bytes read
     65   //
     66   return BytesRead;
     67 }
     68