bind() associates a socket with a socket address structure,
i.e. a specified local port number and IP address.
listen() causes a bound TCP socket to enter listening state.
accept() accepts a received incoming attempt to create a new
TCP connection from the remote client,
recv() is used to receive data from a remote socket.