Setting the Blocking property determines if control
actions complete synchronously or asynchronously. If set to True,
then each control action (such as sending or receiving data) will
return when the operation has completed or timed-out. If set to
False, control actions will return immediately. If the operation
would result in the control blocking (such as attempting to receive
data when none has been written), an error is generated. Control
events such as OnDisconnect, OnRead and
OnWrite are only fired if the socket is non-blocking.