[x] socket() creates a new socket of a certain socket type, identified by an integer number, and allocates system resources to it
[x] bind() is typically used on the server side, and associates a socket with a socket address structure, i.e. a specified local port number and IP address
[x] listen() is used on the server side, and causes a bound TCP socket to enter listening state.
[x] connect() is used on the client side, and assigns a free local port number to a socket. In case of a TCP socket, it causes an attempt to establish a new TCP connection
[x] accept() is used on the server side. It accepts a received incoming attempt to create a new TCP connection from the remote client, and creates a new socket associated with the socket address pair of this connection
[x] send() and recv(), or write() and read(), or sendto() and recvfrom(), are used for sending and receiving data to/from a remote socket
[x] close() causes the system to release resources allocated to a socket. In case of TCP, the connection is terminated
[x] gethostbyname() and gethostbyaddr() are used to resolve host names and addresses. IPv4 only.
[x] select() is used to pend, waiting for one or more of a provided list of sockets to be ready to read, ready to write, or that have errors
[ ] poll() is used to check on the state of a socket in a set of sockets. The set can be tested to see if any socket can be written to, read from or if an error occurred
[x] getsockopt() is used to retrieve the current value of a particular socket option for the specified socket
[x] setsockopt() is used to set a particular socket option for the specified socket