Or there is read the manual page.
Code:
RETURN VALUE
       These calls return the number of bytes received, or -1 if an error occurred.  In the event of an error, errno is set to indicate the error.

       When a stream socket peer has performed an orderly shutdown, the return value will be 0 (the traditional "end-of-file" return).

       Datagram sockets in various domains (e.g., the UNIX and Internet domains) permit zero-length datagrams.  When such a datagram is received, the return value is 0.

       The value 0 may also be returned if the requested number of bytes to receive from a stream socket was 0.
-1 would also evaluate to true in your code.