or download this
recvfrom() operates in the same manner as recv() except that it is abl
+e to return the address of the socket from which the message was sent
+. For connected datagram sockets, recvfrom() simply returns the same
+ address as getpeername() (see getpeername(2)). For stream sockets,
+recvfrom() retrieves data in the same manner as recv(), but does not
+return the socket address of the sender.