protected override void OnErrorOccured(Exception exp)
{
base.OnErrorOccured(exp);
// signal to the server that we will not send anything anymore; this will also interrupt the
// blocking receive in Bind if the server sends FIN/ACK in time
//
// if the FIN/ACK is not sent in time, the socket will be closed in Close(bool)
ShutdownSocket(SocketShutdown.Send);
}