In most
applications, you do not have to close the sockets. When you exit
your program and your process terminates, the sockets are closed
for you.
If you need to close a socket while your program is still
running, use the close system call.
You may have more than one process with the same socket descriptor
if the process with the socket descriptor executes a fork.
close decrements the file descriptor
count and the calling process can no longer use that file descriptor.
When the last close is executed
on a socket, any unsent messages are sent and the socket is closed.
Any unreceived data are lost.