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
recv(int s,void * buffer,size_t length,int flags)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