Closing a Socket
----------------
When you have finished using a socket, you can simply close its file
descriptor with `close'; see Note:Opening and Closing Files. If
there is still data waiting to be transmitted over the connection,
normally `close' tries to complete this transmission. You can control
this behavior using the `SO_LINGER' socket option to specify a timeout
period; see Note:Socket Options.
You can also shut down only reception or transmission on a
connection by calling `shutdown', which is declared in `sys/socket.h'.
- Function: int shutdown (int SOCKET, int HOW)
The `shutdown' function shuts down the connection of socket
SOCKET. The argument HOW specifies what action to perform:
`0'
Stop receiving data for this socket. If further data arrives,
reject it.
`1'
Stop trying to transmit data from this socket. Discard any
data waiting to be sent. Stop looking for acknowledgement of
data already sent; don't retransmit it if it is lost.
`2'
Stop both reception and transmission.
The return value is `0' on success and `-1' on failure. The
following `errno' error conditions are defined for this function:
`EBADF'
SOCKET is not a valid file descriptor.
`ENOTSOCK'
SOCKET is not a socket.
`ENOTCONN'
SOCKET is not connected.