Sets the non-blocking mode of the socket.
void non_blocking( bool mode);
true, the socket's synchronous operations will
boost::asio::error::would_block if they
are unable to perform the requested operation immediately. If
false, synchronous operations will block until complete.
Thrown on failure.
The non-blocking mode has no effect on the behaviour of asynchronous
operations. Asynchronous operations will never fail with the error